<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  
  
  <title>Hexo</title>
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  <meta property="og:type" content="website">
<meta property="og:title" content="Hexo">
<meta property="og:url" content="https://goofyer.gitee.io/notes-on-computer-expertise/page/5/index.html">
<meta property="og:site_name" content="Hexo">
<meta property="og:locale" content="en_US">
<meta property="article:author" content="John Doe">
<meta name="twitter:card" content="summary">
  
    <link rel="alternate" href="/notes-on-computer-expertise/atom.xml" title="Hexo" type="application/atom+xml">
  
  
    <link rel="shortcut icon" href="/notes-on-computer-expertise/favicon.png">
  
  
    
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/typeface-source-code-pro@0.0.71/index.min.css">

  
  
<link rel="stylesheet" href="/notes-on-computer-expertise/css/style.css">

  
    
<link rel="stylesheet" href="/notes-on-computer-expertise/fancybox/jquery.fancybox.min.css">

  
<meta name="generator" content="Hexo 5.4.0"></head>

<body>
  <div id="container">
    <div id="wrap">
      <header id="header">
  <div id="banner"></div>
  <div id="header-outer" class="outer">
    <div id="header-title" class="inner">
      <h1 id="logo-wrap">
        <a href="/notes-on-computer-expertise/" id="logo">Hexo</a>
      </h1>
      
    </div>
    <div id="header-inner" class="inner">
      <nav id="main-nav">
        <a id="main-nav-toggle" class="nav-icon"></a>
        
          <a class="main-nav-link" href="/notes-on-computer-expertise/">Home</a>
        
          <a class="main-nav-link" href="/notes-on-computer-expertise/archives">Archives</a>
        
      </nav>
      <nav id="sub-nav">
        
          <a id="nav-rss-link" class="nav-icon" href="/notes-on-computer-expertise/atom.xml" title="RSS Feed"></a>
        
        <a id="nav-search-btn" class="nav-icon" title="Search"></a>
      </nav>
      <div id="search-form-wrap">
        <form action="//google.com/search" method="get" accept-charset="UTF-8" class="search-form"><input type="search" name="q" class="search-form-input" placeholder="Search"><button type="submit" class="search-form-submit">&#xF002;</button><input type="hidden" name="sitesearch" value="https://goofyer.gitee.io/notes-on-computer-expertise"></form>
      </div>
    </div>
  </div>
</header>

      <div class="outer">
        <section id="main">
  
    <article id="post-数据库/第23篇 MySQL索引" class="h-entry article article-type-post" itemprop="blogPost" itemscope itemtype="https://schema.org/BlogPosting">
  <div class="article-meta">
    <a href="/notes-on-computer-expertise/2022/01/16/%E6%95%B0%E6%8D%AE%E5%BA%93/%E7%AC%AC23%E7%AF%87%20MySQL%E7%B4%A2%E5%BC%95/" class="article-date">
  <time class="dt-published" datetime="2022-01-16T08:36:12.000Z" itemprop="datePublished">2022-01-16</time>
</a>
    
  <div class="article-category">
    <a class="article-category-link" href="/notes-on-computer-expertise/categories/Mysql/">Mysql</a>
  </div>

  </div>
  <div class="article-inner">
    
    
      <header class="article-header">
        
  
    <h1 itemprop="name">
      <a class="p-name article-title" href="/notes-on-computer-expertise/2022/01/16/%E6%95%B0%E6%8D%AE%E5%BA%93/%E7%AC%AC23%E7%AF%87%20MySQL%E7%B4%A2%E5%BC%95/">第23篇 MySQL索引</a>
    </h1>
  

      </header>
    
    <div class="e-content article-entry" itemprop="articleBody">
      
        <h1 id="第23篇：MySQL索引管理"><a href="#第23篇：MySQL索引管理" class="headerlink" title="第23篇：MySQL索引管理"></a>第23篇：MySQL索引管理</h1><h2 id="索引分类"><a href="#索引分类" class="headerlink" title="索引分类"></a><strong>索引分类</strong></h2><ul>
<li>分为<strong>聚集索引</strong>和<strong>⾮聚集索引</strong>。<h2 id="聚集索引"><a href="#聚集索引" class="headerlink" title="聚集索引"></a><strong>聚集索引</strong></h2></li>
<li>每个表有且⼀定会有⼀个聚集索引，整个表的数据存储在聚集索引中，mysql索引是采⽤B+树结构保存在⽂件中，叶⼦节点存储主键的值以及对应记录的数据，⾮叶⼦节点不存储记录的数据，只存储主键的值。当表中未指定主键时，mysql内部会⾃动给每条记录添加⼀个隐藏的rowid字段（默认4个字节）作为主键，⽤rowid构建聚集索引。</li>
<li>聚集索引在mysql中又叫<strong>主键索引</strong>。</li>
<li><strong>⾮聚集索引（辅助索引）</strong><ul>
<li>mysql中⾮聚集索引分为<ul>
<li>单列索引<ul>
<li>即⼀个索引只包含⼀个列。</li>
</ul>
</li>
<li>多列索引（⼜称复合索引）<ul>
<li>即⼀个索引包含多个列。</li>
</ul>
</li>
<li>唯⼀索引<ul>
<li>索引列的值必须唯⼀，允许有⼀个空值。<h2 id="索引管理"><a href="#索引管理" class="headerlink" title="索引管理"></a>索引管理</h2></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li>创建索引<ul>
<li>⽅式1：<ul>
<li>create [unique] index 索引名称 on 表名(列名[(length)]);</li>
</ul>
</li>
<li>⽅式2：<ul>
<li>alter 表名 add [unique] index 索引名称 on (列名[(length)]);<ul>
<li>如果字段是char、varchar类型，length可以⼩于字段实际长度，如果是blog、</li>
<li>text等长⽂本类型，必须指定length。</li>
<li>[unique]：中括号代表可以省略，如果加上了unique，表⽰创建唯⼀索引。</li>
<li>如果table后⾯只写⼀个字段，就是单列索引，如果写多个字段，就是复合索引，多个字段之间⽤逗号隔开。</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li>删除索引<ul>
<li>drop index 索引名称 on 表名;</li>
</ul>
</li>
<li>查看索引<ul>
<li>查看某个表中所有的索引信息如下：</li>
<li>show index from 表名;</li>
</ul>
</li>
<li>索引修改<ul>
<li>可以先删除索引，再重建索引。<h3 id="示例"><a href="#示例" class="headerlink" title="示例"></a>示例</h3><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br></pre></td><td class="code"><pre><span class="line">准备<span class="number">200</span>万数据</span><br><span class="line">建库</span><br><span class="line"><span class="keyword">DROP</span> DATABASE IF <span class="keyword">EXISTS</span> javacode2018; <span class="keyword">CREATE</span> DATABASE javacode2018;</span><br><span class="line"></span><br><span class="line">USE javacode2018;</span><br><span class="line"></span><br><span class="line">建表</span><br><span class="line"><span class="keyword">DROP</span> <span class="keyword">TABLE</span> IF <span class="keyword">EXISTS</span> test1; <span class="keyword">CREATE</span> <span class="keyword">TABLE</span> test1 (</span><br><span class="line">id	<span class="type">INT</span> <span class="keyword">NOT</span> <span class="keyword">NULL</span> COMMENT <span class="string">&#x27;编号&#x27;</span>,</span><br><span class="line">name	<span class="type">VARCHAR</span>(<span class="number">20</span>) <span class="keyword">NOT</span> <span class="keyword">NULL</span> COMMENT <span class="string">&#x27;姓名&#x27;</span>,</span><br><span class="line">sex TINYINT <span class="keyword">NOT</span> <span class="keyword">NULL</span> COMMENT <span class="string">&#x27;性别,1：男，2：⼥&#x27;</span>,</span><br><span class="line">email	<span class="type">VARCHAR</span>(<span class="number">50</span>)</span><br><span class="line">);</span><br><span class="line"></span><br><span class="line">准备数据</span><br><span class="line"><span class="keyword">DROP</span> <span class="keyword">PROCEDURE</span> IF <span class="keyword">EXISTS</span> proc1; DELIMITER $</span><br><span class="line"><span class="keyword">CREATE</span> <span class="keyword">PROCEDURE</span> proc1() <span class="keyword">BEGIN</span></span><br><span class="line"><span class="keyword">DECLARE</span> i <span class="type">INT</span> <span class="keyword">DEFAULT</span> <span class="number">1</span>; <span class="keyword">START</span> TRANSACTION;</span><br><span class="line">WHILE i <span class="operator">&lt;=</span> <span class="number">2000000</span> DO</span><br><span class="line"><span class="keyword">INSERT</span> <span class="keyword">INTO</span> test1 (id, name, sex, email) <span class="keyword">VALUES</span> (i,concat(<span class="string">&#x27;javacode&#x27;</span>,i),if(<span class="built_in">mod</span>(i,<span class="number">2</span>),<span class="number">1</span>,<span class="number">2</span>),concat(<span class="string">&#x27;javacode&#x27;</span>,i,<span class="string">&#x27;@163.com &#x27;</span>));</span><br><span class="line"><span class="keyword">SET</span> i <span class="operator">=</span> i <span class="operator">+</span> <span class="number">1</span>;</span><br><span class="line">if i<span class="operator">%</span><span class="number">10000</span><span class="operator">=</span><span class="number">0</span> <span class="keyword">THEN</span> <span class="keyword">COMMIT</span>;</span><br><span class="line"><span class="keyword">START</span> TRANSACTION; <span class="keyword">END</span> IF;</span><br><span class="line"><span class="keyword">END</span> WHILE;</span><br><span class="line"><span class="keyword">COMMIT</span>;</span><br><span class="line"><span class="keyword">END</span> $</span><br><span class="line"></span><br><span class="line">DELIMITER ;</span><br><span class="line"><span class="keyword">CALL</span> proc1();</span><br><span class="line"><span class="keyword">SELECT</span> <span class="built_in">count</span>(<span class="operator">*</span>) <span class="keyword">FROM</span> test1;</span><br><span class="line"><span class="string">&#x27;&#x27;&#x27;</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string"></span></span><br></pre></td></tr></table></figure></li>
</ul>
</li>
</ul>

      
    </div>
    <footer class="article-footer">
      <a data-url="https://goofyer.gitee.io/notes-on-computer-expertise/2022/01/16/%E6%95%B0%E6%8D%AE%E5%BA%93/%E7%AC%AC23%E7%AF%87%20MySQL%E7%B4%A2%E5%BC%95/" data-id="cl403sxs30036f8vuc91k4xj1" data-title="第23篇 MySQL索引" class="article-share-link">Share</a>
      
      
      
    </footer>
  </div>
  
</article>



  
    <article id="post-编写操作系统/如何用C-编写一个二进制编辑器" class="h-entry article article-type-post" itemprop="blogPost" itemscope itemtype="https://schema.org/BlogPosting">
  <div class="article-meta">
    <a href="/notes-on-computer-expertise/2022/01/16/%E7%BC%96%E5%86%99%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/%E5%A6%82%E4%BD%95%E7%94%A8C-%E7%BC%96%E5%86%99%E4%B8%80%E4%B8%AA%E4%BA%8C%E8%BF%9B%E5%88%B6%E7%BC%96%E8%BE%91%E5%99%A8/" class="article-date">
  <time class="dt-published" datetime="2022-01-16T08:36:12.000Z" itemprop="datePublished">2022-01-16</time>
</a>
    
  <div class="article-category">
    <a class="article-category-link" href="/notes-on-computer-expertise/categories/C-%E5%B7%A5%E5%85%B7/">C#工具</a>
  </div>

  </div>
  <div class="article-inner">
    
    
      <header class="article-header">
        
  
    <h1 itemprop="name">
      <a class="p-name article-title" href="/notes-on-computer-expertise/2022/01/16/%E7%BC%96%E5%86%99%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/%E5%A6%82%E4%BD%95%E7%94%A8C-%E7%BC%96%E5%86%99%E4%B8%80%E4%B8%AA%E4%BA%8C%E8%BF%9B%E5%88%B6%E7%BC%96%E8%BE%91%E5%99%A8/">如何用C#编写一个二进制编辑器</a>
    </h1>
  

      </header>
    
    <div class="e-content article-entry" itemprop="articleBody">
      
        <h1 id="用C-写一个二进制编辑器"><a href="#用C-写一个二进制编辑器" class="headerlink" title="用C#写一个二进制编辑器"></a>用C#写一个二进制编辑器</h1><ul>
<li>最近在学C#，想做点什么来练练手，由于一时之间找不到别的，就先做个二进制编辑器练简单的语法。</li>
<li>要求：实现基本二进制编辑器功能</li>
<li>C#版本：Net4.0</li>
<li>系统环境：win10<h2 id="第一步开发"><a href="#第一步开发" class="headerlink" title="第一步开发"></a>第一步开发</h2></li>
</ul>
<p>源码</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"></span><br></pre></td></tr></table></figure>
<p>笔记：</p>
<p>　　1.Python 没有Switch case语句，可以利用dirt来实现</p>
<p>　　2.Python的=号是复制，复制引用，深复制需要使用copy的deepcopy()函数来实现</p>
<p>　　3.即使在成员函数内，也需要使用self来访问成员变量，这和C++、JAVA很不一样</p>
<p><strong>2017.4.11 更新</strong></p>

      
    </div>
    <footer class="article-footer">
      <a data-url="https://goofyer.gitee.io/notes-on-computer-expertise/2022/01/16/%E7%BC%96%E5%86%99%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/%E5%A6%82%E4%BD%95%E7%94%A8C-%E7%BC%96%E5%86%99%E4%B8%80%E4%B8%AA%E4%BA%8C%E8%BF%9B%E5%88%B6%E7%BC%96%E8%BE%91%E5%99%A8/" data-id="cl403sxsg0048f8vua759cd8n" data-title="如何用C#编写一个二进制编辑器" class="article-share-link">Share</a>
      
      
      
    </footer>
  </div>
  
</article>



  
    <article id="post-编写操作系统/一、编写一个电脑通电最先启动的程序" class="h-entry article article-type-post" itemprop="blogPost" itemscope itemtype="https://schema.org/BlogPosting">
  <div class="article-meta">
    <a href="/notes-on-computer-expertise/2022/01/16/%E7%BC%96%E5%86%99%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/%E4%B8%80%E3%80%81%E7%BC%96%E5%86%99%E4%B8%80%E4%B8%AA%E7%94%B5%E8%84%91%E9%80%9A%E7%94%B5%E6%9C%80%E5%85%88%E5%90%AF%E5%8A%A8%E7%9A%84%E7%A8%8B%E5%BA%8F/" class="article-date">
  <time class="dt-published" datetime="2022-01-16T08:20:51.000Z" itemprop="datePublished">2022-01-16</time>
</a>
    
  <div class="article-category">
    <a class="article-category-link" href="/notes-on-computer-expertise/categories/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E5%BC%80%E5%8F%91/">操作系统开发</a>
  </div>

  </div>
  <div class="article-inner">
    
    
      <header class="article-header">
        
  
    <h1 itemprop="name">
      <a class="p-name article-title" href="/notes-on-computer-expertise/2022/01/16/%E7%BC%96%E5%86%99%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/%E4%B8%80%E3%80%81%E7%BC%96%E5%86%99%E4%B8%80%E4%B8%AA%E7%94%B5%E8%84%91%E9%80%9A%E7%94%B5%E6%9C%80%E5%85%88%E5%90%AF%E5%8A%A8%E7%9A%84%E7%A8%8B%E5%BA%8F/">一、编写一个电脑通电最先启动的程序</a>
    </h1>
  

      </header>
    
    <div class="e-content article-entry" itemprop="articleBody">
      
        <h1 id="一、从计算机结构到汇编程序入门"><a href="#一、从计算机结构到汇编程序入门" class="headerlink" title="一、从计算机结构到汇编程序入门"></a>一、从计算机结构到汇编程序入门</h1><h2 id="1-二进制编辑器"><a href="#1-二进制编辑器" class="headerlink" title="1.二进制编辑器"></a>1.二进制编辑器</h2><ul>
<li>定义：是一种能够直 接对二进制数进行编辑的软件</li>
<li>步骤：<ul>
<li>第一步 下载二进制编辑器 Bz1621<ul>
<li>链接：<a target="_blank" rel="noopener" href="https://pan.baidu.com/s/1a2r40lKlwhLfME0hNpDtrQ">https://pan.baidu.com/s/1a2r40lKlwhLfME0hNpDtrQ</a></li>
<li>提取码：p5hi</li>
</ul>
</li>
<li>第二步，从键盘输入EB4E904845……这个字符串<br>  <img src="二进制编辑器输入EB4E904845.jpg" alt="二进制编辑器输入EB4E904845"></li>
</ul>
</li>
</ul>

      
    </div>
    <footer class="article-footer">
      <a data-url="https://goofyer.gitee.io/notes-on-computer-expertise/2022/01/16/%E7%BC%96%E5%86%99%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/%E4%B8%80%E3%80%81%E7%BC%96%E5%86%99%E4%B8%80%E4%B8%AA%E7%94%B5%E8%84%91%E9%80%9A%E7%94%B5%E6%9C%80%E5%85%88%E5%90%AF%E5%8A%A8%E7%9A%84%E7%A8%8B%E5%BA%8F/" data-id="cl403sxsg0047f8vu83bthrtk" data-title="一、编写一个电脑通电最先启动的程序" class="article-share-link">Share</a>
      
      
      
    </footer>
  </div>
  
</article>



  
    <article id="post-python/python读取excel" class="h-entry article article-type-post" itemprop="blogPost" itemscope itemtype="https://schema.org/BlogPosting">
  <div class="article-meta">
    <a href="/notes-on-computer-expertise/2022/01/15/python/python%E8%AF%BB%E5%8F%96excel/" class="article-date">
  <time class="dt-published" datetime="2022-01-15T14:43:37.000Z" itemprop="datePublished">2022-01-15</time>
</a>
    
  <div class="article-category">
    <a class="article-category-link" href="/notes-on-computer-expertise/categories/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E5%BC%80%E5%8F%91/">操作系统开发</a>
  </div>

  </div>
  <div class="article-inner">
    
    
      <header class="article-header">
        
  
    <h1 itemprop="name">
      <a class="p-name article-title" href="/notes-on-computer-expertise/2022/01/15/python/python%E8%AF%BB%E5%8F%96excel/">前言-中文操作系统开发前置知识</a>
    </h1>
  

      </header>
    
    <div class="e-content article-entry" itemprop="articleBody">
      
        <h1 id="python字符串操作"><a href="#python字符串操作" class="headerlink" title="python字符串操作"></a>python字符串操作</h1><h1 id="replace-方法"><a href="#replace-方法" class="headerlink" title="replace()方法"></a>replace()方法</h1><h2 id="描述"><a href="#描述" class="headerlink" title="描述"></a>描述</h2><p>Python replace() 方法把字符串中的 old（旧字符串） 替换成 new(新字符串)，如果指定第三个参数max，则替换不超过 max 次。</p>
<h2 id="语法"><a href="#语法" class="headerlink" title="语法"></a>语法</h2><p>replace()方法语法：</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">str.replace(old, new[, max])</span><br></pre></td></tr></table></figure>
<h2 id="参数"><a href="#参数" class="headerlink" title="参数"></a>参数</h2><ul>
<li>old — 将被替换的子字符串。</li>
<li>new — 新字符串，用于替换old子字符串。</li>
<li>max — 可选字符串, 替换不超过 max 次</li>
</ul>
<h2 id="返回值"><a href="#返回值" class="headerlink" title="返回值"></a>返回值</h2><p>返回字符串中的 old（旧字符串） 替换成 new(新字符串)后生成的新字符串，如果指定第三个参数max，则替换不超过 max 次。</p>
<h2 id="实例"><a href="#实例" class="headerlink" title="实例"></a>实例</h2><p>以下实例展示了replace()函数的使用方法：</p>
<h2 id="实例-1"><a href="#实例-1" class="headerlink" title="实例"></a>实例</h2><p>#!/usr/bin/python  str = “this is string example….wow!!! this is really string”; print str.replace(“is”, “was”); print str.replace(“is”, “was”, 3);</p>
<p>以上实例输出结果如下：</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">thwas was string example....wow!!! thwas was really string</span><br><span class="line">thwas was string example....wow!!! thwas is really string</span><br></pre></td></tr></table></figure>
      
    </div>
    <footer class="article-footer">
      <a data-url="https://goofyer.gitee.io/notes-on-computer-expertise/2022/01/15/python/python%E8%AF%BB%E5%8F%96excel/" data-id="cl403sxrl002bf8vuhtm75q9a" data-title="前言-中文操作系统开发前置知识" class="article-share-link">Share</a>
      
      
      
    </footer>
  </div>
  
</article>



  
    <article id="post-编写操作系统/前言-中文操作系统开发前置知识" class="h-entry article article-type-post" itemprop="blogPost" itemscope itemtype="https://schema.org/BlogPosting">
  <div class="article-meta">
    <a href="/notes-on-computer-expertise/2022/01/15/%E7%BC%96%E5%86%99%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/%E5%89%8D%E8%A8%80-%E4%B8%AD%E6%96%87%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E5%BC%80%E5%8F%91%E5%89%8D%E7%BD%AE%E7%9F%A5%E8%AF%86/" class="article-date">
  <time class="dt-published" datetime="2022-01-15T14:43:37.000Z" itemprop="datePublished">2022-01-15</time>
</a>
    
  <div class="article-category">
    <a class="article-category-link" href="/notes-on-computer-expertise/categories/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E5%BC%80%E5%8F%91/">操作系统开发</a>
  </div>

  </div>
  <div class="article-inner">
    
    
      <header class="article-header">
        
  
    <h1 itemprop="name">
      <a class="p-name article-title" href="/notes-on-computer-expertise/2022/01/15/%E7%BC%96%E5%86%99%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/%E5%89%8D%E8%A8%80-%E4%B8%AD%E6%96%87%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E5%BC%80%E5%8F%91%E5%89%8D%E7%BD%AE%E7%9F%A5%E8%AF%86/">前言-中文操作系统开发前置知识</a>
    </h1>
  

      </header>
    
    <div class="e-content article-entry" itemprop="articleBody">
      
        <p>一、基础知识</p>
<p>1.什么是操作系统</p>
<p>可以任意显示窗体，光标控制，运行多个程序</p>
<p>2.从零开始编写操作系统的工具</p>
<p>语言：C语音</p>
<p>3.操作系统运行的逻辑</p>
<p>开机后自动执行</p>
<p>4.如何执行操作系统</p>
<p>1.在windows系统编写源代码</p>
<p>2.用C语音编译源代码，生成机器语言</p>
<p>3.对机器语言文件进行加工，生成软盘映像文件</p>
<p>4.将映像文件写入磁盘，生成含操作系统的启动盘</p>
<p>二、目录参考</p>
<p>第一周（第<strong>1</strong>天 ～ 第<strong>7</strong>天） </p>
<p>一开始首先要考虑怎么来写一个“只要一通电就能运行的程序”。这部分 </p>
<p>用C语言写起来有些困难，所以主要还是用汇编语言来写。 </p>
<p>这步完成之后，下一步就要写一个从磁盘读取操作系统的程序。这时即 </p>
<p>便打开电脑电源，它也不会自动地将操作系统全部都读进来，它只能读 </p>
<p>取磁盘上最开始的512字节的内容，所以我们要编写剩余部分的载入程 </p>
<p>序。这个程序也要用汇编语言编写。 </p>
<p>一旦完成了这一步，以后的程序就可以用C语言来编写了。我们就尽快 </p>
<p>使用C语言来学习开发显示画面的程序。同时，我们也能慢慢熟悉C语 </p>
<p>言语法。这个时候我们好像在做自己想做的事，但事实上我们还没有自 </p>
<p>由操纵C语言。 </p>
<p>接下来，为了实现“移动鼠标”这一雄心，我们要对CPU进行细致的设 </p>
<p>定，并掌握中断处理程序的写法。从全书总体看来，这一部分是水平相 </p>
<p>当高的部分，笔者也觉得放在这里有些不妥，但从本书条理上讲，这些 </p>
<p>内容必须放在这里，所以只好请大家忍耐一下了。在这里，CPU的规格 </p>
<p>以及电脑复杂的规格都会给我们带来各种各样的麻烦。而且开发语言既 </p>
<p>有C语言，又有汇编语言，这又给我们造成了更大的混乱。这个时候我 </p>
<p>们一点儿也不会觉得这是在做自己想做的事，怎么看都像是在“受人摆 </p>
<p>布”。 </p>
<p>渡过这个痛苦的时期，第一周就该结束了。 </p>
<p>第二周（第<strong>8</strong>天 ～ 第<strong>14</strong>天）一周的苦战还是很有意义的，回头一看，我们就会发现自己还是斩获颇 </p>
<p>丰的。这时我们已经基本掌握了C语言的语法，连汇编语言的水平也能 </p>
<p>达到本书的要求了。 </p>
<p>所以现在我们就可以着手开发像样的操作系统了。但是这一次我们又要 </p>
<p>为算法头痛了。即使掌握了编程语言的语法，如果不懂得好的算法的 </p>
<p>话，也还是不能开发出来自己想要的操作系统。所以这一周我们就边学 </p>
<p>习算法边慢慢地开发操作系统。不过到了这一阶段，我们就能感觉到基 </p>
<p>本上不会再受技术问题限制了。 </p>
<p>第三周（第<strong>15</strong>天 ～ 第<strong>21</strong>天） </p>
<p>现在我们的技术已经相当厉害了，可以随心所欲地开发自己的操作系统 </p>
<p>了。首先是要支持多任务，然后是开发命令行窗口，之后就可以着手开 </p>
<p>发应用程序了。到本周结束时，就算还不够完备，我们也能拿出一个可 </p>
<p>以称之为操作系统的软件了。 </p>
<p>第四周（第<strong>22</strong>天 ～ 第<strong>28</strong>天） </p>
<p>在这个阶段，我们可以尽情地给操作系统增加各种各样的功能，同时还 </p>
<p>可以开发出大量像模像样的应用程序来。这个阶段我们已经能做得很好 </p>
<p>了，这可能也是我们最高兴的时期。这部分要讲解的内容很少，笔者也 </p>
<p>不用再煞费苦心地去写那些文字说明了，可以把精力都集中在编程上 </p>
<p>（笑）。对了，说起文字才想起来，正好在这个时期可以让我们的操作 </p>
<p>系统显示文字了。 </p>
<p>免费赠送两天（第<strong>29</strong>天 ～ 第<strong>30</strong>天） </p>
<p>剩下的两天用来润色加工。这两天我们来做一些之前没来得及做，但做 </p>
<p>起来既简单又有趣的内容</p>

      
    </div>
    <footer class="article-footer">
      <a data-url="https://goofyer.gitee.io/notes-on-computer-expertise/2022/01/15/%E7%BC%96%E5%86%99%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/%E5%89%8D%E8%A8%80-%E4%B8%AD%E6%96%87%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E5%BC%80%E5%8F%91%E5%89%8D%E7%BD%AE%E7%9F%A5%E8%AF%86/" data-id="cl403sxsf0045f8vugb3fg88o" data-title="前言-中文操作系统开发前置知识" class="article-share-link">Share</a>
      
      
      
    </footer>
  </div>
  
</article>



  
    <article id="post-虚幻4引擎开发/一、准备工作-开始建模" class="h-entry article article-type-post" itemprop="blogPost" itemscope itemtype="https://schema.org/BlogPosting">
  <div class="article-meta">
    <a href="/notes-on-computer-expertise/2022/01/11/%E8%99%9A%E5%B9%BB4%E5%BC%95%E6%93%8E%E5%BC%80%E5%8F%91/%E4%B8%80%E3%80%81%E5%87%86%E5%A4%87%E5%B7%A5%E4%BD%9C-%E5%BC%80%E5%A7%8B%E5%BB%BA%E6%A8%A1/" class="article-date">
  <time class="dt-published" datetime="2022-01-11T15:17:20.000Z" itemprop="datePublished">2022-01-11</time>
</a>
    
  </div>
  <div class="article-inner">
    
    
      <header class="article-header">
        
  
    <h1 itemprop="name">
      <a class="p-name article-title" href="/notes-on-computer-expertise/2022/01/11/%E8%99%9A%E5%B9%BB4%E5%BC%95%E6%93%8E%E5%BC%80%E5%8F%91/%E4%B8%80%E3%80%81%E5%87%86%E5%A4%87%E5%B7%A5%E4%BD%9C-%E5%BC%80%E5%A7%8B%E5%BB%BA%E6%A8%A1/">一、准备工作 开始建模</a>
    </h1>
  

      </header>
    
    <div class="e-content article-entry" itemprop="articleBody">
      
        <h1 id="一、第一步-新建一个关卡"><a href="#一、第一步-新建一个关卡" class="headerlink" title="一、第一步 新建一个关卡"></a>一、第一步 新建一个关卡</h1><h2 id="文件夹的归类"><a href="#文件夹的归类" class="headerlink" title="文件夹的归类"></a>文件夹的归类</h2><ul>
<li>内容文件夹<ul>
<li>创建一个文件nightmare<ul>
<li>放自己的东西（蓝图资源） </li>
<li>创建一个文件夹level</li>
<li>创建一个文件夹gamebase<ul>
<li>存放游戏模式文件 游戏实例文件等</li>
<li>在项目中创建一个gamemode的游戏模式</li>
</ul>
</li>
<li>创建blueprint<ul>
<li>创建character 玩家控制<ul>
<li>创建玩家角色 </li>
<li>创建蓝图接口</li>
</ul>
</li>
<li>创建actor     交互</li>
</ul>
</li>
</ul>
</li>
<li>创建一个文件夹movies<ul>
<li>影片素材<h2 id="地图和模式"><a href="#地图和模式" class="headerlink" title="地图和模式"></a>地图和模式</h2></li>
</ul>
</li>
</ul>
</li>
<li>编辑器开始地图/默认地图（编辑-项目测试）<h3 id="创建玩家controller"><a href="#创建玩家controller" class="headerlink" title="创建玩家controller"></a>创建玩家controller</h3></li>
<li>蓝图选择玩家控制器<h3 id="打开gamemode"><a href="#打开gamemode" class="headerlink" title="打开gamemode"></a>打开gamemode</h3></li>
<li>把玩家控制类改成自己的<h3 id="打开controller"><a href="#打开controller" class="headerlink" title="打开controller"></a>打开controller</h3></li>
<li>来到事件图表<ul>
<li>创建beginplay事件 <h3 id="创建场景"><a href="#创建场景" class="headerlink" title="创建场景"></a>创建场景</h3></li>
</ul>
</li>
</ul>
<p>脱出一个立方体作为墙面</p>
<p><img src="1-1642784404541.jpg" alt="1"></p>
<p>设置立方体参数</p>
<p>按住alt键复制</p>

      
    </div>
    <footer class="article-footer">
      <a data-url="https://goofyer.gitee.io/notes-on-computer-expertise/2022/01/11/%E8%99%9A%E5%B9%BB4%E5%BC%95%E6%93%8E%E5%BC%80%E5%8F%91/%E4%B8%80%E3%80%81%E5%87%86%E5%A4%87%E5%B7%A5%E4%BD%9C-%E5%BC%80%E5%A7%8B%E5%BB%BA%E6%A8%A1/" data-id="cl403sxsi004df8vudla447cx" data-title="一、准备工作 开始建模" class="article-share-link">Share</a>
      
      
      
    </footer>
  </div>
  
</article>



  
    <article id="post-linux/二、linux-shell教程" class="h-entry article article-type-post" itemprop="blogPost" itemscope itemtype="https://schema.org/BlogPosting">
  <div class="article-meta">
    <a href="/notes-on-computer-expertise/2022/01/03/linux/%E4%BA%8C%E3%80%81linux-shell%E6%95%99%E7%A8%8B/" class="article-date">
  <time class="dt-published" datetime="2022-01-03T03:11:59.000Z" itemprop="datePublished">2022-01-03</time>
</a>
    
  <div class="article-category">
    <a class="article-category-link" href="/notes-on-computer-expertise/categories/linux/">linux</a>
  </div>

  </div>
  <div class="article-inner">
    
    
      <header class="article-header">
        
  
    <h1 itemprop="name">
      <a class="p-name article-title" href="/notes-on-computer-expertise/2022/01/03/linux/%E4%BA%8C%E3%80%81linux-shell%E6%95%99%E7%A8%8B/">二、linux shell教程</a>
    </h1>
  

      </header>
    
    <div class="e-content article-entry" itemprop="articleBody">
      
        <h1 id="第2章-Linux-Shell基础"><a href="#第2章-Linux-Shell基础" class="headerlink" title="第2章 Linux Shell基础"></a>第2章 Linux Shell基础</h1><h2 id="2-1Shell概述"><a href="#2-1Shell概述" class="headerlink" title="2.1Shell概述"></a>2.1Shell概述</h2><h3 id="2-1-1什么是shell"><a href="#2-1-1什么是shell" class="headerlink" title="2.1.1什么是shell"></a>2.1.1什么是shell</h3><ul>
<li>命令行模式下，用户和UNIX/Linux操作系统内核间的接口。它接收用户输入的命令或数据，并解释执行，之后，将命令的执行结果在显示器等输出设备上显示出来。 </li>
<li>Shell：外壳，也就是界面</li>
<li>Shell的作用<ul>
<li>接受输入</li>
<li>解释执行接受到的输入信息</li>
<li>输出结果</li>
</ul>
</li>
</ul>
<h3 id="2-1-2常用的Linux-Shell"><a href="#2-1-2常用的Linux-Shell" class="headerlink" title="2.1.2常用的Linux Shell"></a>2.1.2常用的Linux Shell</h3><ul>
<li>Sh:Bourne shell</li>
<li>Bash:Bourne Again Shell，最常用</li>
<li>Csh：C Shell,加州大学伯克利分校，与Bourne Shell基本兼容，但是程序设计界面有很大不同</li>
<li>Ksh:Korn Shell,Unix系统下最普遍的</li>
<li>Tcsh:C Shell的加强版</li>
<li>Zsh：Z Shell，最新的Shell，与Bourn Shell兼容<h2 id="2-2常用的Shell命令"><a href="#2-2常用的Shell命令" class="headerlink" title="2.2常用的Shell命令"></a>2.2常用的Shell命令</h2><h3 id="命令格式"><a href="#命令格式" class="headerlink" title="命令格式"></a>命令格式</h3></li>
<li>在Shell提示符下，就可以输入 LINUX命令。</li>
<li>LINUX命令的基本格式如下：</li>
<li>command 参数1 参数2 … 参数n</li>
<li>LINUX命令由一个命令(command)和零到多个参数构成，命令和参数之间，以及参数与参数之间用空格隔开。 LINUX命令区分大小写，且命令和参数之间必须隔开。<h3 id="简单命令"><a href="#简单命令" class="headerlink" title="简单命令"></a>简单命令</h3>| 解释         | LINUX命令 | 命令举例      |<br>| —————— | ————- | ——————- |<br>| 査看日期     | date      | date          |<br>| 显示日历     | cal       | cal 2008      |<br>| 显示大字56   | banner    | banner “ABCD” |<br>| 计算器       | bc        | bc            |<br>| 查看谁在使用 | who       | who           |<br>| 査看我是谁   | who am i  | who am i      |<br>| 清除屏幕     | clear     | clear         |<br>| 帮助         | man       | man date      |<br>| 修改口令     | passwd    | passwd        |<h4 id="系统注销命令"><a href="#系统注销命令" class="headerlink" title="系统注销命令"></a>系统注销命令</h4></li>
<li>在每次使用完后，一定要进行注销，以防他人通 过你的帐号进入系统，并保证系统的完整性。注销过 程如下：在系统提示符下，运行：<ul>
<li>$ exit</li>
<li>$ logout</li>
<li>或直接按键：ctrl+d</li>
</ul>
</li>
<li>注：由于系统的不同，注销的命令也可能不同。<h4 id="系统关机命令"><a href="#系统关机命令" class="headerlink" title="系统关机命令"></a>系统关机命令</h4></li>
<li>是用来关闭linux操作系统的。作为一个普通用户是不能够随便关闭系统的，因为虽然你用完了机器，可是这时候可能还有其它的用户正在使用系统。因此，关闭系统 或者是重新启动系统的操作只有管理员才有权限执行。</li>
<li>shutdown关闭系统的时候有以下几种格式：<ul>
<li><h1 id="shutdown-h-now-（下完这个指令，系统立刻-关机）"><a href="#shutdown-h-now-（下完这个指令，系统立刻-关机）" class="headerlink" title="shutdown -h now （下完这个指令，系统立刻 关机）"></a>shutdown -h now （下完这个指令，系统立刻 关机）</h1></li>
<li><h1 id="shutdown-h-20-25-（系统会在今天的-20：-25关机）"><a href="#shutdown-h-20-25-（系统会在今天的-20：-25关机）" class="headerlink" title="shutdown -h 20:25 （系统会在今天的 20：    25关机）"></a>shutdown -h 20:25 （系统会在今天的 20：    25关机）</h1></li>
<li><h1 id="shutdown-h-10-（系统会在十分钟后关机"><a href="#shutdown-h-10-（系统会在十分钟后关机" class="headerlink" title="shutdown -h +10 （系统会在十分钟后关机"></a>shutdown -h +10 （系统会在十分钟后关机</h1></li>
<li>输入halt，系统就会开始进入关闭过程，其效果和shutdown -h now是完全一样的。<h4 id="系统重启命令"><a href="#系统重启命令" class="headerlink" title="系统重启命令"></a>系统重启命令</h4></li>
</ul>
</li>
<li>用来重新启动系统的。当你输入重启命令后 ，你就会看到系统正在将一个一个的服务都关闭掉，然后再关闭文件系统和硬件，接着机器开始 重新自检，重新引导，再次进入linux系统。</li>
<li>shutdown重启系统<ul>
<li><h1 id="shutdown-r-now-（下完这个指令，系统立刻-重启）"><a href="#shutdown-r-now-（下完这个指令，系统立刻-重启）" class="headerlink" title="shutdown -r now （下完这个指令，系统立刻 重启）"></a>shutdown -r now （下完这个指令，系统立刻 重启）</h1></li>
<li><h1 id="shutdown-r-20-25-（系统会在今天的-20：-25重启）"><a href="#shutdown-r-20-25-（系统会在今天的-20：-25重启）" class="headerlink" title="shutdown -r 20:25 （系统会在今天的 20：    25重启）"></a>shutdown -r 20:25 （系统会在今天的 20：    25重启）</h1></li>
<li><h1 id="shutdown-r-10-（系统会在十分钟后重启）"><a href="#shutdown-r-10-（系统会在十分钟后重启）" class="headerlink" title="shutdown -r +10 （系统会在十分钟后重启）"></a>shutdown -r +10 （系统会在十分钟后重启）</h1><h3 id="目录管理"><a href="#目录管理" class="headerlink" title="目录管理"></a>目录管理</h3><h4 id="（一）目录结构"><a href="#（一）目录结构" class="headerlink" title="（一）目录结构"></a>（一）目录结构</h4></li>
</ul>
</li>
<li>目录结构：树形</li>
<li>分割符：“/”</li>
<li>Linux系统的常用目录<br>| 符号 | 解释 |<br>| —— | ——————————— |<br>| /bin | 大部分可执行的Linu x命令和共用程序 |<br>| /dev | 设备文件，如/dev/cdO |<br>| /etc | 系统管理命令和数据文件 |<br>| /lib | C程序库 |<br>| /usr | 存放用户的家目录和用户共用程序或文件 |<br>| /home | 用户的家目录 |<h4 id="（二）常用的目录操作命令"><a href="#（二）常用的目录操作命令" class="headerlink" title="（二）常用的目录操作命令"></a>（二）常用的目录操作命令</h4></li>
</ul>
<div class="table-container">
<table>
<thead>
<tr>
<th></th>
<th>命令</th>
<th>命令举例</th>
<th>类似DOS命令</th>
</tr>
</thead>
<tbody>
<tr>
<td>显示当前目录</td>
<td>pwd</td>
<td>pwd</td>
<td>cd</td>
</tr>
<tr>
<td>改变目录</td>
<td>cd</td>
<td>cd /usr</td>
<td>cd c:usr</td>
</tr>
<tr>
<td>进入家目录</td>
<td>cd</td>
<td>cd</td>
<td></td>
</tr>
<tr>
<td>创建目录</td>
<td>mkdir</td>
<td>mkdir abc</td>
<td>md abc</td>
</tr>
<tr>
<td>删除空目录</td>
<td>rmdir</td>
<td>rmdir abc</td>
<td>rd abc</td>
</tr>
<tr>
<td>删除目录及其内容</td>
<td>rm -r</td>
<td>rm -r abc</td>
<td>deltree abc</td>
</tr>
<tr>
<td>显示目录内容</td>
<td>Is</td>
<td>Is -1 abc（目录长列表）<br/>Is -a abc（所有类型文件）</td>
<td>dir abc</td>
</tr>
</tbody>
</table>
</div>
<h2 id="2-2-4文件管理"><a href="#2-2-4文件管理" class="headerlink" title="2.2.4文件管理"></a>2.2.4文件管理</h2><h3 id="一、文件类型"><a href="#一、文件类型" class="headerlink" title="一、文件类型"></a>一、文件类型</h3><div class="table-container">
<table>
<thead>
<tr>
<th>文件</th>
<th>符号</th>
</tr>
</thead>
<tbody>
<tr>
<td>1)普通文件(ordinal file)(文本文件，二进制文件）</td>
<td>-</td>
</tr>
<tr>
<td>2)目录文件(directory)</td>
<td>d</td>
</tr>
<tr>
<td>3)块设备文件</td>
<td>b</td>
</tr>
<tr>
<td>4)字符设备文件</td>
<td>c</td>
</tr>
<tr>
<td>5)号链接文件(symbolic links)</td>
<td>l</td>
</tr>
</tbody>
</table>
</div>
<div class="table-container">
<table>
<thead>
<tr>
<th>？</th>
<th>任一个字符，如”abc?”</th>
</tr>
</thead>
<tbody>
<tr>
<td>*</td>
<td>任何字符，如\”ab*10”表示以ab开头和以10结尾的名字</td>
</tr>
</tbody>
</table>
</div>
<p>注：区分大小写（file1和File1表示两个不同的文件）；</p>
<h3 id="二、文件权限"><a href="#二、文件权限" class="headerlink" title="二、文件权限"></a>二、文件权限</h3><ul>
<li>LINUX文件有三种存取权限</li>
</ul>
<div class="table-container">
<table>
<thead>
<tr>
<th>权限</th>
<th>普通文件的存取权限</th>
<th>目录的存取权限</th>
</tr>
</thead>
<tbody>
<tr>
<td>r</td>
<td>具有读取文件的权利</td>
<td>能读取文件名称和内容</td>
</tr>
<tr>
<td>w</td>
<td>具有写入文件的权利</td>
<td>能修改和删除文件，可以改变文件名</td>
</tr>
<tr>
<td>x</td>
<td>具有执行文件的权利</td>
<td>能使用该目录下的文件（如\\cd\\命令）搜索文件等</td>
</tr>
</tbody>
</table>
</div>
<ul>
<li>有三种类型的用户可以存取文件:</li>
</ul>
<div class="table-container">
<table>
<thead>
<tr>
<th>用户类型</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>owner</td>
<td>文件的所有者（创建该文件的用户\）</td>
</tr>
<tr>
<td>group</td>
<td>文件的所有者所在的组</td>
</tr>
<tr>
<td>other</td>
<td>其他用户（非owner和非group）</td>
</tr>
</tbody>
</table>
</div>
<ul>
<li>用chmod命令修改文件的存取权限 ：</li>
<li>格式：chmod 用户类型+ 文件权限 文件名</li>
</ul>
<div class="table-container">
<table>
<thead>
<tr>
<th>u</th>
<th>拥有者    (user — owner)</th>
</tr>
</thead>
<tbody>
<tr>
<td>g</td>
<td>与拥有者同一组的用户(group)</td>
</tr>
<tr>
<td>o</td>
<td>其他人(other)</td>
</tr>
<tr>
<td>a</td>
<td>所有人(all)</td>
</tr>
</tbody>
</table>
</div>
<ul>
<li>改变文件所有者的格式如下：（必须对文件具有 write权利才可改变文件的拥有者）<ul>
<li>chown所有者文件名<ul>
<li>chown wjm testl</li>
</ul>
</li>
</ul>
</li>
<li>改变文件所在组的格式如下：（必须是文件的拥 有者或superviso r才能改变文件组别的归属） <ul>
<li>chgrp组名文件名<ul>
<li>chgrp newservice testl<h3 id="三、文件的基本操作命令"><a href="#三、文件的基本操作命令" class="headerlink" title="三、文件的基本操作命令"></a>三、文件的基本操作命令</h3><h4 id="（一）简单命令"><a href="#（一）简单命令" class="headerlink" title="（一）简单命令"></a>（一）简单命令</h4>|简单命令 |命令| 命令举例|<br>| ——————————— | ——————————— | —————————————————————————————— |<br>| 显示文件属性 | ls           | Is -1 abc（文件长列表）<br/>ls-a abc所有文件（包含隐藏文件） |<br>| 显示文件内容 | cat          | cat filel.c                                        |<br>| 拷贝文件     | cP | cp filel file2                                     |<br>| 移动文件     | mv           | mv call.test call.list                             |<br>| 删除文件     | rm           | rm call.list                                       |<h4 id="（二）find命令"><a href="#（二）find命令" class="headerlink" title="（二）find命令"></a>（二）find命令</h4></li>
</ul>
</li>
</ul>
</li>
<li>find命令会在指定目录及其子目录下查找符合条件的 特定文件。</li>
<li>命令格式：    find目录名条件<h4 id="（三）grep-命令"><a href="#（三）grep-命令" class="headerlink" title="（三）grep 命令"></a>（三）grep 命令</h4></li>
<li>按给定的模式在文件中査找信息</li>
<li>格式：grep [options] pattern file<h4 id="（四）cmp命令比较文件"><a href="#（四）cmp命令比较文件" class="headerlink" title="（四）cmp命令比较文件"></a>（四）cmp命令比较文件</h4></li>
<li>cmp可比较两个文件，这两个文件可以是文本文件 也可以是非文本文件。若两个文件内容相同，则不显示任何信息;若不同会显示两个文件第一次数据不同的位置。</li>
<li>命令格式:cmp [.ls]文件名1文件名2</li>
</ul>
<h2 id="2-2-5用户和用户组管理"><a href="#2-2-5用户和用户组管理" class="headerlink" title="2.2.5用户和用户组管理"></a>2.2.5用户和用户组管理</h2><h3 id="一、用户账号"><a href="#一、用户账号" class="headerlink" title="一、用户账号"></a>一、用户账号</h3><ul>
<li>帐号作用：<ul>
<li>用于系统识别用户身份,记录用户在系统中的活动</li>
</ul>
</li>
<li>系统中设置两类用户：<ul>
<li>超级用户:<ul>
<li>拥有系统最高权限，帐号为root</li>
</ul>
</li>
<li>普通用户:<ul>
<li>由超级用户创建的只能管理自己的文件和目录。<h3 id="二、用户账号文件"><a href="#二、用户账号文件" class="headerlink" title="二、用户账号文件"></a>二、用户账号文件</h3><h4 id="1、-etc-passwd："><a href="#1、-etc-passwd：" class="headerlink" title="1、/etc/passwd："></a>1、/etc/passwd：</h4></li>
</ul>
</li>
</ul>
</li>
<li>username : x : uid : gid : comment: homedir : loginshell ⑴(2) (3)    (4)    (5)    (6)    (7)</li>
<li>例如：zhang:*:103:100:zhang hongguang:/home/zhang:/bin/bash<ul>
<li>(1)：用户名</li>
<li>(2)： 口令，加密显示</li>
<li>(3)：用户ID</li>
<li>(4)：用户组ID</li>
<li>(5)：用户信息描述</li>
<li>(6)：用户主目录</li>
<li>(7)：是否允许登录<h3 id="三、用户组文件"><a href="#三、用户组文件" class="headerlink" title="三、用户组文件"></a>三、用户组文件</h3><h4 id="文件-group"><a href="#文件-group" class="headerlink" title="文件/group"></a>文件/group</h4><h5 id="存储与用户帐户相关的用户组信息"><a href="#存储与用户帐户相关的用户组信息" class="headerlink" title="存储与用户帐户相关的用户组信息"></a>存储与用户帐户相关的用户组信息</h5><h4 id="格式：groupname-password-gid-user・list"><a href="#格式：groupname-password-gid-user・list" class="headerlink" title="格式：groupname : password : gid : user・list"></a>格式：groupname : password : gid : user・list</h4></li>
</ul>
</li>
<li>(1)：用户组名称</li>
<li>(2)：用户组口令</li>
<li>(3)：用户组标识</li>
<li>(4)：组中的用户列表<h3 id="四、用户管理的常用命令"><a href="#四、用户管理的常用命令" class="headerlink" title="四、用户管理的常用命令"></a>四、用户管理的常用命令</h3><h4 id="添加帐号"><a href="#添加帐号" class="headerlink" title="添加帐号"></a>添加帐号</h4></li>
<li>一般形式：useradd 用户名</li>
<li>设置口令：passwd 用户名<h4 id="删除帐号"><a href="#删除帐号" class="headerlink" title="删除帐号"></a>删除帐号</h4></li>
<li>一般形式：userdel -r 用户名<h2 id="2-2-6其他常用命令"><a href="#2-2-6其他常用命令" class="headerlink" title="2.2.6其他常用命令"></a>2.2.6其他常用命令</h2></li>
<li>查看磁盘空间（df）</li>
<li>管道(|)</li>
<li>awk</li>
<li>统计（wc） </li>
<li>判断文件类型（file） </li>
<li>tee<h3 id="一、查看文件系统的磁盘空间使用信息"><a href="#一、查看文件系统的磁盘空间使用信息" class="headerlink" title="一、查看文件系统的磁盘空间使用信息"></a>一、查看文件系统的磁盘空间使用信息</h3></li>
<li>格式：df [选项] [文件系统]</li>
<li>选项：<ul>
<li>缺省 以k字节为单位显示磁盘使用信息</li>
<li>-h 分别以K 、M、G字节为单位显示磁盘空间使用情况</li>
</ul>
</li>
<li>如：<ul>
<li>$df </li>
<li>$df -h </li>
<li>$df -h /dev/sda1<h3 id="二、管道（-）"><a href="#二、管道（-）" class="headerlink" title="二、管道（|）"></a>二、管道（|）</h3></li>
</ul>
</li>
<li>可以通过管道把一个命令的输出命令1 | 命令2传递给另一个命令作为输入。管道用竖杠|表示。它的一般形式为：命令1 | 命令2<h3 id="三、awk"><a href="#三、awk" class="headerlink" title="三、awk"></a>三、awk</h3>把文件或命令的执行结果逐行读入，以空格为单位进行分割，按条件提取所需内容。它的<br>一般形式为：awk ‘{条件}’ 文件或 命令 | awk ‘{条件}’<h3 id="四、WC-统计命令"><a href="#四、WC-统计命令" class="headerlink" title="四、WC(统计命令)"></a>四、WC(统计命令)</h3></li>
<li>统计指定文件或命令输出结果中的字节数、字数和行数，并输出统计结果。一般形式为：</li>
<li>wc [参数] 文件名</li>
<li>命令|wc [参数]</li>
<li>参数：<ul>
<li>-c 统计字节数</li>
<li>-l 统计行数</li>
<li>-w 统计字数<h3 id="五、file-判断文件类型"><a href="#五、file-判断文件类型" class="headerlink" title="五、file(判断文件类型)"></a>五、file(判断文件类型)</h3></li>
</ul>
</li>
<li>格式：file 文件名<h3 id="六、tee命令"><a href="#六、tee命令" class="headerlink" title="六、tee命令"></a>六、tee命令</h3></li>
<li>功能：把输出的结果既保存到文件里，也显示到屏幕上。</li>
<li>它的一般形式为：tee -a files<h1 id="2-3-shell的输入与输出"><a href="#2-3-shell的输入与输出" class="headerlink" title="2.3 shell的输入与输出"></a>2.3 shell的输入与输出</h1></li>
<li>指shell命令或脚本执行时数据的输入或输出。</li>
<li>⑴ 在shell中，输入数据的方式主要有两种：一种是使 用标准输入—键盘，或者指定一个文件作为输入；</li>
<li>⑵ 对于输出也是一样：标准输出——屏幕，或者指定一个文件作为输出；</li>
<li>⑶ 执行命令或脚本时出现了错误，产生的错误提示信息，缺省输出到屏幕上，也可以把这些信息</li>
<li>主要内容：<ul>
<li>标准输入、标准输出及标准错误输出</li>
<li>输入/输出重定向<h2 id="2-3-1标准输入、标准输出及标准错误输出"><a href="#2-3-1标准输入、标准输出及标准错误输出" class="headerlink" title="2.3.1标准输入、标准输出及标准错误输出"></a>2.3.1标准输入、标准输出及标准错误输出</h2><h3 id="一、标准输出"><a href="#一、标准输出" class="headerlink" title="一、标准输出"></a>一、标准输出</h3><h4 id="（一）echo"><a href="#（一）echo" class="headerlink" title="（一）echo"></a>（一）echo</h4></li>
</ul>
</li>
<li>使用echo命令可以把要输出的信息写到“”中， 当字符串输出，也可以输出变量的有。它的一般形式为：<ul>
<li>echo “string”</li>
</ul>
</li>
<li>若字符串中有特殊字符，如：<ul>
<li>\c不换行</li>
<li>\t跳格</li>
<li>\n换行<h4 id="（二）cat"><a href="#（二）cat" class="headerlink" title="（二）cat"></a>（二）cat</h4></li>
</ul>
</li>
<li>cat是一个简单而通用的命令，可以用它来显示输出文件内容。</li>
<li>一般形式：$ cat myfile<h3 id="二、标准输入"><a href="#二、标准输入" class="headerlink" title="二、标准输入"></a>二、标准输入</h3><h4 id="（一）read"><a href="#（一）read" class="headerlink" title="（一）read"></a>（一）read</h4></li>
<li>使用read命令可以从键盘中读入数据并将其赋给一个变量。它的一般形式为：read 变量1 变量2<h2 id="2-3-2输入-输出重定向"><a href="#2-3-2输入-输出重定向" class="headerlink" title="2.3.2输入/输出重定向"></a>2.3.2输入/输出重定向</h2><h3 id="一、输出重定向（-gt-和-gt-gt-）"><a href="#一、输出重定向（-gt-和-gt-gt-）" class="headerlink" title="一、输出重定向（&gt;和 &gt;&gt;）"></a>一、输出重定向（&gt;和 &gt;&gt;）</h3><h4 id="（一）-gt"><a href="#（一）-gt" class="headerlink" title="（一）&gt;"></a>（一）&gt;</h4></li>
<li>把命令的输出数据定向到文件中（覆盖）</li>
<li>格式：cat filename1 filename2 …&gt; file<h4 id="（二）-gt-gt"><a href="#（二）-gt-gt" class="headerlink" title="（二）&gt;&gt;"></a>（二）&gt;&gt;</h4></li>
<li>把命令的标准输出定向到文件中（追加）<h3 id="二、输入重定向（-lt-和-lt-lt-）"><a href="#二、输入重定向（-lt-和-lt-lt-）" class="headerlink" title="二、输入重定向（&lt;和&lt;&lt;）"></a>二、输入重定向（&lt;和&lt;&lt;）</h3><h4 id="（一）-lt"><a href="#（一）-lt" class="headerlink" title="（一）&lt;"></a>（一）&lt;</h4></li>
<li>命令的输入被定向来自于文件</li>
<li>$ sort &lt; name.txt<h4 id="二-（-lt-lt-）即时文件定向符"><a href="#二-（-lt-lt-）即时文件定向符" class="headerlink" title="(二)（&lt;&lt;）即时文件定向符"></a>(二)（&lt;&lt;）即时文件定向符</h4></li>
<li>命令的输入被定向来自于文件，这个文</li>
<li>件是由一对定界符标识的若干行构成<h3 id="三、与文件描述符有关的重定向"><a href="#三、与文件描述符有关的重定向" class="headerlink" title="三、与文件描述符有关的重定向"></a>三、与文件描述符有关的重定向</h3>Linux每打开一个文件，会给该文件分配一个数字，这个数字称为文件描述符，通常都是通过文件名对文件进行操作，也可以通过文件描述符对文件进行操作（3-num）。下面这些是常用文件描述符及它们通常所对应的文件名</li>
</ul>
<div class="table-container">
<table>
<thead>
<tr>
<th>文件</th>
<th>文件描述符</th>
</tr>
</thead>
<tbody>
<tr>
<td>标准输入（默认键盘）</td>
<td>0</td>
</tr>
<tr>
<td>标准输出 （默认屏幕）</td>
<td>1</td>
</tr>
<tr>
<td>标准错误输出（默认屏幕）</td>
<td>2</td>
</tr>
</tbody>
</table>
</div>
<h4 id="（一）使用文件描符重定向的基本用法"><a href="#（一）使用文件描符重定向的基本用法" class="headerlink" title="（一）使用文件描符重定向的基本用法"></a>（一）使用文件描符重定向的基本用法</h4><ul>
<li>在错误信息进行重定向时，必须要使用文件描述符，但是对于标准输入和输出来说，这不是必需的。</li>
<li>command 2 &gt; filename 把标准错误输出重定向到一个文件中</li>
<li><ul>
<li>command 2 &gt;&gt; filename 把标准输出重定向到一个文件中(追加)</li>
</ul>
</li>
<li>command &gt; filename 把标准输出重定向到一个文件中（通常省略描述符1）</li>
<li>command &gt;&gt; filename 把标准输出重定向到一个文件中(追加)（通常省略描述符1）<h4 id="（二）合并标准输出和标准错误输出的重定向"><a href="#（二）合并标准输出和标准错误输出的重定向" class="headerlink" title="（二）合并标准输出和标准错误输出的重定向"></a>（二）合并标准输出和标准错误输出的重定向</h4>在上面的例子中， grep命令的标准输出和标准错误都被重定向到grep.out文件中<h1 id="2-4命令执行顺序"><a href="#2-4命令执行顺序" class="headerlink" title="2.4命令执行顺序"></a>2.4命令执行顺序</h1>在shell中，如果希望在一个命令执行成功后再执行另一个命令，或者在一个命令执行失败后再执行另一个命令，&amp;&amp; 和 || 控制命令执行顺序。<h2 id="2-4-1-使用-amp-amp"><a href="#2-4-1-使用-amp-amp" class="headerlink" title="2.4.1 使用&amp;&amp;"></a>2.4.1 使用&amp;&amp;</h2>使用&amp;&amp;的一般形式为：<br>命令1 &amp;&amp; 命令2 当&amp;&amp;左边的命令（命令1）返回真(即返回0，成功被执行）后，&amp;&amp;右边的命令（命令2）才能够被执行；<h2 id="2-4-2-使用"><a href="#2-4-2-使用" class="headerlink" title="2.4.2 使用||"></a>2.4.2 使用||</h2>使用||的一般形式为：<br>命令1 || 命令2<br>||的作用有一些不同。如果||左边的命令（命 令1）未执行成功，那么就执行||右边的命令<br>（命令2）；或者换句话说，“如果这个命令执行失败了|| 那么就执行这个命令“<h2 id="2-4-3用（）将命令结合在一起"><a href="#2-4-3用（）将命令结合在一起" class="headerlink" title="2.4.3用（）将命令结合在一起"></a>2.4.3用（）将命令结合在一起</h2></li>
<li>如果希望把几个命令合在一起执行， 可以用命令分隔符隔开每一个命令，并把所有的命令用圆括号（）括起来。</li>
<li>它的一般形式为： （命令1; 命令2; . . .）<h1 id="2-5正则表达式"><a href="#2-5正则表达式" class="headerlink" title="2.5正则表达式"></a>2.5正则表达式</h1></li>
<li>在shell脚本编程中，正则表达式是非常重要的。一个好的脚本和一个质量一般脚本之间的差别之一，就看能否正确合理的运用正则表达式。</li>
<li>正则表达式的组成：<ul>
<li>(1)一般字符：没有特殊意义的字符例如，A将查询A，x将查找字母x</li>
<li>(2)特殊字符（meta字符）：元字符，在正则表达式中有特殊意义<h2 id="2-5-1-使用句点匹配单字符"><a href="#2-5-1-使用句点匹配单字符" class="headerlink" title="2.5.1 使用句点匹配单字符"></a>2.5.1 使用句点匹配单字符</h2><h2 id="2-5-2-使用-从行首开始匹配字符"><a href="#2-5-2-使用-从行首开始匹配字符" class="headerlink" title="2.5.2 使用^从行首开始匹配字符"></a>2.5.2 使用^从行首开始匹配字符</h2></li>
</ul>
</li>
<li>^只允许在一行的开始查找字符。<h2 id="2-5-3-使用-在行尾匹配字符或字符串"><a href="#2-5-3-使用-在行尾匹配字符或字符串" class="headerlink" title="2.5.3 使用$在行尾匹配字符或字符串"></a>2.5.3 使用$在行尾匹配字符或字符串</h2></li>
<li>例如：查找以abc结尾的所有行，正则表达式如下：abc$<h2 id="2-5-4-使用-匹配任意数量的字符"><a href="#2-5-4-使用-匹配任意数量的字符" class="headerlink" title="2.5.4 使用*匹配任意数量的字符"></a>2.5.4 使用*匹配任意数量的字符</h2></li>
<li>代表任意数量的字符。例如，正则表达式如下：compu*t<h2 id="2-5-5-使用-屏蔽特殊字符的含义"><a href="#2-5-5-使用-屏蔽特殊字符的含义" class="headerlink" title="2.5.5 使用 \ 屏蔽特殊字符的含义"></a>2.5.5 使用 \ 屏蔽特殊字符的含义</h2></li>
<li>有时要查找的字符是系统指定的特殊字符<h2 id="2-5-6-使用-匹配一个范围或集合"><a href="#2-5-6-使用-匹配一个范围或集合" class="headerlink" title="2.5.6 使用[ ]匹配一个范围或集合"></a>2.5.6 使用[ ]匹配一个范围或集合</h2></li>
<li>如，要查找包含0-9中任意一个数字的行，正则表达式如下：[ 0 - 9 ]<h2 id="2-5-7-使用-控制匹配字符连续出现的次数"><a href="#2-5-7-使用-控制匹配字符连续出现的次数" class="headerlink" title="2.5.7 使用 \{\} 控制匹配字符连续出现的次数"></a>2.5.7 使用 \{\} 控制匹配字符连续出现的次数</h2></li>
<li>匹配模式有三种，即：<ul>
<li>字符\{n\} 匹配字符连续出现n次。</li>
<li>字符\{n,\} 匹配字符最少连续出现n次。</li>
<li>字符\{n,m} 匹配字符出现的次数在n到m之间n , m为0 - 2 5 5中任意整数。<h1 id="2-6-t-r-命令"><a href="#2-6-t-r-命令" class="headerlink" title="2.6 t r 命令"></a>2.6 t r 命令</h1></li>
</ul>
</li>
<li>功能：替换或删除字符。<ul>
<li>删除重复出现的字符</li>
<li>删除空行</li>
<li>大小写字符转换<h2 id="2-6-1-删除重复出现的字符"><a href="#2-6-1-删除重复出现的字符" class="headerlink" title="2.6.1 删除重复出现的字符"></a>2.6.1 删除重复出现的字符</h2></li>
</ul>
</li>
<li>下面文件包含了一些不希望看到的重复出现的字符。例如，在编辑文件时，偶尔一个键按的时间长了。</li>
<li>格式为：<ul>
<li>tr [参数] 字符串 &lt; file</li>
</ul>
</li>
<li>参数：<ul>
<li>-d 删除指定字符串中的所有字符。</li>
<li>-s 删除字指定符串中所有重复出现的字符，只保留第一个。</li>
<li>-c 删除指定字符串以外的所有字符。<h2 id="2-6-2-删除空行"><a href="#2-6-2-删除空行" class="headerlink" title="2.6.2 删除空行"></a>2.6.2 删除空行</h2></li>
</ul>
</li>
<li>下面文件中有许多空行。要将这些空行从文件中删除 pg plane.txt</li>
<li>tr中特定控制字符<br>|符号| 含义 |八进制方式|<br>| —— | —————- | —————- |<br>|\a| Ctrl-G 铃声 |\ 0 0 7|<br>|\b|Ctrl-H 退格符 |\ 0 1 0|<br>|\f| Ctrl-L 换页 |\ 0 1 4|<br>|\n| Ctrl-J 换行 |\ 0 1 2|<br>|\t| Ctrl-I tab键 |\ 0 11|<br>|\v| Ctrl-X |\ 0 3 0|<h2 id="2-6-3大写、小写字符转换"><a href="#2-6-3大写、小写字符转换" class="headerlink" title="2.6.3大写、小写字符转换"></a>2.6.3大写、小写字符转换</h2></li>
<li>将文件或命令输出结果中的大小写字 符进行转换</li>
<li>格式为：<ul>
<li>tr字符串1 字符串2 file</li>
<li>或</li>
<li>命令I tr字符串1字符串2</li>
</ul>
</li>
</ul>

      
    </div>
    <footer class="article-footer">
      <a data-url="https://goofyer.gitee.io/notes-on-computer-expertise/2022/01/03/linux/%E4%BA%8C%E3%80%81linux-shell%E6%95%99%E7%A8%8B/" data-id="cl403sxrg0021f8vubmo640vh" data-title="二、linux shell教程" class="article-share-link">Share</a>
      
      
      
    </footer>
  </div>
  
</article>



  
    <article id="post-linux/五、" class="h-entry article article-type-post" itemprop="blogPost" itemscope itemtype="https://schema.org/BlogPosting">
  <div class="article-meta">
    <a href="/notes-on-computer-expertise/2022/01/03/linux/%E4%BA%94%E3%80%81/" class="article-date">
  <time class="dt-published" datetime="2022-01-03T03:11:59.000Z" itemprop="datePublished">2022-01-03</time>
</a>
    
  <div class="article-category">
    <a class="article-category-link" href="/notes-on-computer-expertise/categories/linux/">linux</a>
  </div>

  </div>
  <div class="article-inner">
    
    
      <header class="article-header">
        
  
    <h1 itemprop="name">
      <a class="p-name article-title" href="/notes-on-computer-expertise/2022/01/03/linux/%E4%BA%94%E3%80%81/">五</a>
    </h1>
  

      </header>
    
    <div class="e-content article-entry" itemprop="articleBody">
      
        <h1 id="文件的系统调用"><a href="#文件的系统调用" class="headerlink" title="文件的系统调用"></a>文件的系统调用</h1><h2 id="系统调用open"><a href="#系统调用open" class="headerlink" title="系统调用open"></a>系统调用open</h2><h2 id="系统调用creat"><a href="#系统调用creat" class="headerlink" title="系统调用creat"></a>系统调用creat</h2><h2 id="系统调用close"><a href="#系统调用close" class="headerlink" title="系统调用close"></a>系统调用close</h2><h1 id="系统调用link和unlink"><a href="#系统调用link和unlink" class="headerlink" title="系统调用link和unlink"></a>系统调用link和unlink</h1><h2 id="系统调用read和write"><a href="#系统调用read和write" class="headerlink" title="系统调用read和write"></a>系统调用read和write</h2><h2 id="其它系统调用"><a href="#其它系统调用" class="headerlink" title="其它系统调用"></a>其它系统调用</h2><h1 id="关于系统调用和库函数"><a href="#关于系统调用和库函数" class="headerlink" title="关于系统调用和库函数"></a>关于系统调用和库函数</h1><ul>
<li>C语言支持一系列的库函数的调用, 其中最基本的是studio库函数。事实上, 库函数只是C语言在较高层次上调用的 方式，系统调用是更低层次的与C语言 的界面，是内核提供给用户调用的函 数。</li>
</ul>
<p><img src="image-20220129190249811.png" alt="image-20220129190249811"></p>
<p>C程序使用系统调用的语句和调用库函数的语句 形式完全相同，但是二者运行的环境和运行机制截 然不同。<br>从运行环境来看，库函数使用依赖于所运行的 用户环境，程序调用库函数时，它运行的目标代码 是属于程序的，程序处于“用户态”执行；而系统 调用的使用不依赖于它运行的用户环境，是UNIX内 核提供的低层服务，系统调用时所执行的代码是属 于内核的，程序处于“核心态”执行。<br>系统调用和库函数对于出错的处理也不尽相同。<br>对于studio库中的函数，出错时会返回一个预定 义的常量EOF或NULL；许多库函数在出错时常常返 回。或-1;有些库函数则返回某种出错代码。<br>系统调用的出错处理比较简单，每个系统调用<br>在出错时都返回-1,在调用成功时返回0（或某些<br>其他具有特定意义的整数值）。LINUX系统调用把出错代码放在一个名为error的外部变量中，在程序/ 包含头文件error.h,便可以得到error的错误代码。<br>程序库函数的调用最终还是要通过系统调 用来实现，库函数一般执行一条指令，该指令 （操作系统陷阱operating system trap）将进 程执行方式变为核心态，然后使内核为系统调 用执行代码。<br>编写一个高效的程序，不依靠系统调用的 支持是不可想象的。甚至可以这么说，对 LINUX系统调用熟悉的程度决定了在LINUX环 境下编程水平的高低。</p>

      
    </div>
    <footer class="article-footer">
      <a data-url="https://goofyer.gitee.io/notes-on-computer-expertise/2022/01/03/linux/%E4%BA%94%E3%80%81/" data-id="cl403sxrh0022f8vu8pho5ixi" data-title="五" class="article-share-link">Share</a>
      
      
      
    </footer>
  </div>
  
</article>



  
    <article id="post-机器学习/第三课用机器学习设计聊天机器人" class="h-entry article article-type-post" itemprop="blogPost" itemscope itemtype="https://schema.org/BlogPosting">
  <div class="article-meta">
    <a href="/notes-on-computer-expertise/2022/01/03/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/%E7%AC%AC%E4%B8%89%E8%AF%BE%E7%94%A8%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%AE%BE%E8%AE%A1%E8%81%8A%E5%A4%A9%E6%9C%BA%E5%99%A8%E4%BA%BA/" class="article-date">
  <time class="dt-published" datetime="2022-01-03T03:11:59.000Z" itemprop="datePublished">2022-01-03</time>
</a>
    
  <div class="article-category">
    <a class="article-category-link" href="/notes-on-computer-expertise/categories/linux/">linux</a>
  </div>

  </div>
  <div class="article-inner">
    
    
      <header class="article-header">
        
  
    <h1 itemprop="name">
      <a class="p-name article-title" href="/notes-on-computer-expertise/2022/01/03/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/%E7%AC%AC%E4%B8%89%E8%AF%BE%E7%94%A8%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%AE%BE%E8%AE%A1%E8%81%8A%E5%A4%A9%E6%9C%BA%E5%99%A8%E4%BA%BA/">五</a>
    </h1>
  

      </header>
    
    <div class="e-content article-entry" itemprop="articleBody">
      
        <h1 id="第3课-机器学习构建chatbot"><a href="#第3课-机器学习构建chatbot" class="headerlink" title="第3课 机器学习构建chatbot"></a>第3课 机器学习构建chatbot</h1><h2 id="主要内容"><a href="#主要内容" class="headerlink" title="主要内容"></a>主要内容</h2><h3 id="关于聊天机器人的思考"><a href="#关于聊天机器人的思考" class="headerlink" title="关于聊天机器人的思考"></a>关于聊天机器人的思考</h3><h4 id="1-工程考量"><a href="#1-工程考量" class="headerlink" title="1.工程考量"></a>1.工程考量</h4><h4 id="2-机器学习角度考虑"><a href="#2-机器学习角度考虑" class="headerlink" title="2.机器学习角度考虑"></a>2.机器学习角度考虑</h4><h3 id="预备知识"><a href="#预备知识" class="headerlink" title="预备知识"></a>预备知识</h3><h4 id="1-检索与匹配"><a href="#1-检索与匹配" class="headerlink" title="1.检索与匹配"></a>1.检索与匹配</h4><h4 id="2-分类与朴素贝叶斯"><a href="#2-分类与朴素贝叶斯" class="headerlink" title="2.分类与朴素贝叶斯"></a>2.分类与朴素贝叶斯</h4><h3 id="chatterbot"><a href="#chatterbot" class="headerlink" title="chatterbot"></a>chatterbot</h3><h4 id="1-架构与使用方法"><a href="#1-架构与使用方法" class="headerlink" title="1.架构与使用方法"></a>1.架构与使用方法</h4><h4 id="2-源码分析"><a href="#2-源码分析" class="headerlink" title="2.源码分析"></a>2.源码分析</h4><h2 id="传统聊天机器人"><a href="#传统聊天机器人" class="headerlink" title="传统聊天机器人"></a>传统聊天机器人</h2><h3 id="NLP基础知识"><a href="#NLP基础知识" class="headerlink" title="NLP基础知识"></a>NLP基础知识</h3><h4 id="基本分词"><a href="#基本分词" class="headerlink" title="基本分词"></a>基本分词</h4><h4 id="关键词抽取-tf-idf等"><a href="#关键词抽取-tf-idf等" class="headerlink" title="关键词抽取(tf-idf等)"></a>关键词抽取(tf-idf等)</h4><h4 id="正则表达式模式匹配"><a href="#正则表达式模式匹配" class="headerlink" title="正则表达式模式匹配"></a>正则表达式模式匹配</h4><h3 id="Machine-Learning相关知识"><a href="#Machine-Learning相关知识" class="headerlink" title="Machine Learning相关知识"></a>Machine Learning相关知识</h3><h4 id="文本表示与匹配"><a href="#文本表示与匹配" class="headerlink" title="文本表示与匹配"></a>文本表示与匹配</h4><h4 id="分类-文本场景分析"><a href="#分类-文本场景分析" class="headerlink" title="分类(文本场景分析)"></a>分类(文本场景分析)</h4><h4 id="数据驱动-特征工程"><a href="#数据驱动-特征工程" class="headerlink" title="数据驱动(特征工程)"></a>数据驱动(特征工程)</h4><h2 id="聊天机器人的一些思考"><a href="#聊天机器人的一些思考" class="headerlink" title="聊天机器人的一些思考"></a>聊天机器人的一些思考</h2><h3 id="工程考量"><a href="#工程考量" class="headerlink" title="工程考量"></a>工程考量</h3><h4 id="架构设计清晰、模块化"><a href="#架构设计清晰、模块化" class="headerlink" title="架构设计清晰、模块化"></a>架构设计清晰、模块化</h4><h4 id="功能分拆，解耦，部件可插拔与扩展"><a href="#功能分拆，解耦，部件可插拔与扩展" class="headerlink" title="功能分拆，解耦，部件可插拔与扩展"></a>功能分拆，解耦，部件可插拔与扩展</h4><p><img src="image-20220130190100167.png" alt="image-20220130190100167"></p>
<h2 id="聊天机器人的一些思考-1"><a href="#聊天机器人的一些思考-1" class="headerlink" title="聊天机器人的一些思考"></a>聊天机器人的一些思考</h2><h3 id="算法与机器学习角度考量"><a href="#算法与机器学习角度考量" class="headerlink" title="算法与机器学习角度考量"></a>算法与机器学习角度考量</h3><h4 id="算法简单，数据-特征-驱动"><a href="#算法简单，数据-特征-驱动" class="headerlink" title="算法简单，数据(特征)驱动"></a>算法简单，数据(特征)驱动</h4><h4 id="场景化与垂直领域"><a href="#场景化与垂直领域" class="headerlink" title="场景化与垂直领域"></a>场景化与垂直领域</h4><h2 id="预备知识：检索与匹配"><a href="#预备知识：检索与匹配" class="headerlink" title="预备知识：检索与匹配"></a>预备知识：检索与匹配</h2><h3 id="基于检索与匹配"><a href="#基于检索与匹配" class="headerlink" title="基于检索与匹配"></a>基于检索与匹配</h3><h4 id="知识库（存储了问题与回复内容）"><a href="#知识库（存储了问题与回复内容）" class="headerlink" title="知识库（存储了问题与回复内容）"></a>知识库（存储了问题与回复内容）</h4><h4 id="检索：搜寻相关问题"><a href="#检索：搜寻相关问题" class="headerlink" title="检索：搜寻相关问题"></a>检索：搜寻相关问题</h4><h4 id="匹配：对结果进行排序"><a href="#匹配：对结果进行排序" class="headerlink" title="匹配：对结果进行排序"></a>匹配：对结果进行排序</h4><h2 id="预备知识：编辑距离"><a href="#预备知识：编辑距离" class="headerlink" title="预备知识：编辑距离"></a>预备知识：编辑距离</h2><h3 id="编辑距离"><a href="#编辑距离" class="headerlink" title="编辑距离"></a>编辑距离</h3><h4 id="编辑距离-Levenshtein距离，是指两个字符串之间，由一个转成另一个所需要的最少编辑操作次数。-u-允许的编辑操作包括："><a href="#编辑距离-Levenshtein距离，是指两个字符串之间，由一个转成另一个所需要的最少编辑操作次数。-u-允许的编辑操作包括：" class="headerlink" title="编辑距离/Levenshtein距离，是指两个字符串之间，由一个转成另一个所需要的最少编辑操作次数。 u 允许的编辑操作包括："></a>编辑距离/Levenshtein距离，是指两个字符串之间，由一个转成另一个所需要的最少编辑操作次数。 u 允许的编辑操作包括：</h4><ul>
<li>将一个字符替换成另一个字符</li>
<li>插入一个字符</li>
<li>删除一个字符<br><img src="image-20220130191617429.png" alt="image-20220130191617429"><br><img src="image-20220130191622211.png" alt="image-20220130191622211"><br>预备知识：python编辑距离<br>Python在string 类型中，默认的utf-8 编码下，一个中文字符是用三个字节来表示的。用unicode。<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"># -*- coding:utf-8 -*- </span><br><span class="line">import Levenshtein </span><br><span class="line">texta = &#x27;爱动脑的小王欣&#x27; </span><br><span class="line">textb = &#x27;爱动脑的小王欣&#x27; </span><br><span class="line">print(Levenshtein.distance(texta,textb))</span><br></pre></td></tr></table></figure>
预备知识：场景分类与NB<script type="math/tex; mode=display">
P(B|A)=\frac{P(A|B)P(B)}{P(A)}</script></li>
</ul>
<p><img src="1.png" alt="1"></p>
<p>o 每个部分都设计了不同的“适配器”(Adapter) </p>
<p>o机器人应答逻辑 =&gt; Logic Adapters </p>
<p>oClosest Match Adapter </p>
<p>l 字符串模糊匹配(编辑距离) </p>
<p>oClosest Meaning Adapter </p>
<p>l 借助nltk的WordNet，近义词评估 </p>
<p>oTime Logic Adapter </p>
<p>l 处理涉及时间的提问 </p>
<p>oMathematical Evaluation Adapter </p>
<p>l 涉及数学运算<br>每个部分都设计了不同的“适配器”(Adapter)<br>o存储器后端 =&gt; Storage Adapters<br>oRead Only Mode<br>l 只读模式，当有输入数据到chatterbot的时候，数<br>据库并不会发生改变<br>oJson Database Adapter<br>l 用以存储对话数据的接口，对话数据以Json格式<br>进行存储。 oMongo Database Adapter<br>l 以MongoDB database方式来存储对话数据</p>

      
    </div>
    <footer class="article-footer">
      <a data-url="https://goofyer.gitee.io/notes-on-computer-expertise/2022/01/03/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/%E7%AC%AC%E4%B8%89%E8%AF%BE%E7%94%A8%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%AE%BE%E8%AE%A1%E8%81%8A%E5%A4%A9%E6%9C%BA%E5%99%A8%E4%BA%BA/" data-id="cl403sxsf0044f8vubjidd4v1" data-title="五" class="article-share-link">Share</a>
      
      
      
    </footer>
  </div>
  
</article>



  
    <article id="post-数值分析笔记" class="h-entry article article-type-post" itemprop="blogPost" itemscope itemtype="https://schema.org/BlogPosting">
  <div class="article-meta">
    <a href="/notes-on-computer-expertise/2022/01/02/%E6%95%B0%E5%80%BC%E5%88%86%E6%9E%90%E7%AC%94%E8%AE%B0/" class="article-date">
  <time class="dt-published" datetime="2022-01-02T15:39:46.000Z" itemprop="datePublished">2022-01-02</time>
</a>
    
  <div class="article-category">
    <a class="article-category-link" href="/notes-on-computer-expertise/categories/%E6%95%B0%E5%AD%A6/">数学</a>
  </div>

  </div>
  <div class="article-inner">
    
    
      <header class="article-header">
        
  
    <h1 itemprop="name">
      <a class="p-name article-title" href="/notes-on-computer-expertise/2022/01/02/%E6%95%B0%E5%80%BC%E5%88%86%E6%9E%90%E7%AC%94%E8%AE%B0/">数值分析笔记</a>
    </h1>
  

      </header>
    
    <div class="e-content article-entry" itemprop="articleBody">
      
        <h1 id="数值分析笔记"><a href="#数值分析笔记" class="headerlink" title="数值分析笔记"></a>数值分析笔记</h1><h2 id="一、误差"><a href="#一、误差" class="headerlink" title="一、误差"></a>一、误差</h2><h3 id="概述"><a href="#概述" class="headerlink" title="概述"></a>概述</h3><h4 id="1、绝对误差（限）、相对误差（限）、有效数字（有效数）的定义及相互关系；"><a href="#1、绝对误差（限）、相对误差（限）、有效数字（有效数）的定义及相互关系；" class="headerlink" title="1、绝对误差（限）、相对误差（限）、有效数字（有效数）的定义及相互关系；"></a>1、绝对误差（限）、相对误差（限）、有效数字（有效数）的定义及相互关系；</h4><h4 id="2、四则运算与函数值的误差估计；"><a href="#2、四则运算与函数值的误差估计；" class="headerlink" title="2、四则运算与函数值的误差估计；"></a>2、四则运算与函数值的误差估计；</h4><h4 id="3、秦九韶算法。"><a href="#3、秦九韶算法。" class="headerlink" title="3、秦九韶算法。"></a>3、秦九韶算法。</h4><h3 id="1-1课程起源"><a href="#1-1课程起源" class="headerlink" title="1-1课程起源"></a>1-1课程起源</h3><ul>
<li><ol>
<li>历史沿革<ul>
<li>数学最初导源于计算，计算曾经是古代数学的最重要的组成部分。</li>
<li>各个时期的大数学家，在发展基础数学的同时也都对计算方法作出了重要贡献。例如：牛顿、拉格朗日、高斯、秦九韶等。</li>
<li>直到20世纪40年代，由于技术手段和计算工具条件的不足，发展比较缓慢，作用也比较有限。</li>
</ul>
</li>
</ol>
</li>
<li><ol>
<li>计算方法的形成<ul>
<li>① 20世纪下半叶，计算机极大地扩展了数学的应用范围与能力。如：天气预报</li>
<li>② 计算能力的提高与所用计算方法的效能密切相关。</li>
<li>③ 以原来分散在数学各分支的计算方法为基础的一门新的数学科学“计算数学”开始形成并迅速发展。</li>
</ul>
</li>
</ol>
</li>
<li><ol>
<li>作用与意义<ul>
<li>科学实验、科学理论、科学计算已成为人类进行科学活动的三大方法。这是伽利略、牛顿以来在科学方法论方面取得的重大进展。<h3 id="1-2-计算机数值方法的研究对象"><a href="#1-2-计算机数值方法的研究对象" class="headerlink" title="1-2 计算机数值方法的研究对象"></a>1-2 计算机数值方法的研究对象</h3></li>
</ul>
</li>
</ol>
</li>
<li><ol>
<li>研究问题<ul>
<li>利用计算机解决科学计算问题的全过程大致如下：实际问题 → 构造数学模型 → 设计数值计算方法→程序设计 → 上机求出结果 → 回到实际问题。</li>
</ul>
</li>
</ol>
</li>
<li>数学模型举例：<ul>
<li>例1-1  鸡兔同笼：(共10只，34只脚)导致方程组；</li>
<li>例1-2  追线（弹道轨迹）在Ox轴上有一点P以常速a沿着正方向移动；在平面上另有一点M，它以常速v移动，方向永远指向动点P，求M点的轨迹。导致微分方程</li>
<li>例1-3  曲边梯形的面积</li>
<li><img src="数值分析笔记/image/image-20220115222944261.png" alt="image-20220115222944261"></li>
</ul>
</li>
<li><ol>
<li>课程的任务<ul>
<li>本课程的任务是：</li>
<li>① 将计算机不能直接计算的运算，化成在计算机上可执行的运算。</li>
<li><script type="math/tex; mode=display">
e^x\approx1+x+\frac{x^2}{x} +……+\frac{x^n}{n!}\\
y'(x)\approx \frac{y(x+h)-y(x)}{h}</script><h3 id="1-3-课程特点及学习目的"><a href="#1-3-课程特点及学习目的" class="headerlink" title="1-3 课程特点及学习目的"></a>1-3 课程特点及学习目的</h3></li>
</ul>
</li>
</ol>
</li>
<li><ol>
<li>主要特点<ul>
<li>本课程的特点是涉及数学中的多个分支，如微积分学、微分方程，代数中的解非线性方程、方程组等。既有纯数学的高度抽象性与严密科学性的特点，同时又具有应用广泛性与数值试验的高度技术性。（要求先掌握基本数学知识，以及计算机的基本操作）</li>
</ul>
</li>
</ol>
</li>
<li><ol>
<li>学习目的<ul>
<li>本课程不仅在解决工程的计算问题上，在一些大型计算、高层次的计算机系统设计上都有着十分重要的意义。因此，本课程也是计算数学专业的必修课。</li>
<li>① 学习一些常用的数值方法，掌握数值方法的基本理论，为进一步研究新算法奠定基础。</li>
<li>② 初步掌握一种软件包：Matlab, Mathematic等的使用方法。<h3 id="1-4-参考书目"><a href="#1-4-参考书目" class="headerlink" title="1-4 参考书目"></a>1-4 参考书目</h3></li>
</ul>
</li>
</ol>
</li>
<li>参考书目：<ul>
<li>①《数值方法》：易大义等，浙江科技出版社</li>
<li>②《计算方法》：武汉大学，高等教育出版社</li>
<li>③《数值计算方法》：李有法，高等教育出版社</li>
<li>④《数值分析》：李庆扬，王能超，易大义。</li>
<li>⑤《计算方法引论》：徐萃薇。</li>
<li>④《数值分析引论》：易大义，陈道琦。<h3 id="2-1-数学模型与数值问题"><a href="#2-1-数学模型与数值问题" class="headerlink" title="2-1  数学模型与数值问题"></a>2-1  数学模型与数值问题</h3></li>
</ul>
</li>
<li><ol>
<li>数学模型<ul>
<li>实际问题经抽象、简化而产生的一组解析表达式或原始数据。</li>
</ul>
</li>
</ol>
</li>
<li><ol>
<li>数值问题<ul>
<li>输入数据与输出数据之间函数关系的一个确定而无歧义的描述。</li>
<li>例如：求二次方程的根，可算作一个数值问题</li>
</ul>
</li>
</ol>
</li>
</ul>
<h2 id="二、插值"><a href="#二、插值" class="headerlink" title="二、插值"></a>二、插值</h2><h3 id="1、Lagrange插值多项式的构造与插值余项估计，-Lagrange插值基函数的定义及性质；"><a href="#1、Lagrange插值多项式的构造与插值余项估计，-Lagrange插值基函数的定义及性质；" class="headerlink" title="1、Lagrange插值多项式的构造与插值余项估计， Lagrange插值基函数的定义及性质；"></a>1、Lagrange插值多项式的构造与插值余项估计， Lagrange插值基函数的定义及性质；</h3><h3 id="2、Newton插值多项式的构造与插值余项估计，差商的定义及性质（差商表的构造，差商与导数的关系）；"><a href="#2、Newton插值多项式的构造与插值余项估计，差商的定义及性质（差商表的构造，差商与导数的关系）；" class="headerlink" title="2、Newton插值多项式的构造与插值余项估计，差商的定义及性质（差商表的构造，差商与导数的关系）；"></a>2、Newton插值多项式的构造与插值余项估计，差商的定义及性质（差商表的构造，差商与导数的关系）；</h3><h3 id="3、Hermite插值多项式的构造与插值余项估计，重节点差商表的构造"><a href="#3、Hermite插值多项式的构造与插值余项估计，重节点差商表的构造" class="headerlink" title="3、Hermite插值多项式的构造与插值余项估计，重节点差商表的构造"></a>3、Hermite插值多项式的构造与插值余项估计，重节点差商表的构造</h3><h2 id="三、函数逼近"><a href="#三、函数逼近" class="headerlink" title="三、函数逼近"></a>三、函数逼近</h2><h3 id="1、C-a-b-上函数f-x-的n次最佳一致逼近多项式的构造与最佳逼近（误差）的估计；（利用切比雪夫多项式进行多项式的降阶）"><a href="#1、C-a-b-上函数f-x-的n次最佳一致逼近多项式的构造与最佳逼近（误差）的估计；（利用切比雪夫多项式进行多项式的降阶）" class="headerlink" title="1、C[a,b]上函数f(x)的n次最佳一致逼近多项式的构造与最佳逼近（误差）的估计；（利用切比雪夫多项式进行多项式的降阶）"></a>1、C[a,b]上函数f(x)的n次最佳一致逼近多项式的构造与最佳逼近（误差）的估计；（利用切比雪夫多项式进行多项式的降阶）</h3><ul>
<li>例如<script type="math/tex; mode=display">
\text{求5次多项式}f(x)=4x^5+3x^3+1\text {在区间[0,2]上的3次最佳一致逼近多项式并估计误差（最佳逼近值、最小偏差）。}</script><h3 id="2、C-a-b-上函数f-x-的n次最佳平方逼近多项式的构造与平（均）方误差的估计；（按勒让德多项式展开求最佳平方逼近多项式）"><a href="#2、C-a-b-上函数f-x-的n次最佳平方逼近多项式的构造与平（均）方误差的估计；（按勒让德多项式展开求最佳平方逼近多项式）" class="headerlink" title="2、C[a,b]上函数f(x)的n次最佳平方逼近多项式的构造与平（均）方误差的估计；（按勒让德多项式展开求最佳平方逼近多项式）"></a>2、C[a,b]上函数f(x)的n次最佳平方逼近多项式的构造与平（均）方误差的估计；（按勒让德多项式展开求最佳平方逼近多项式）</h3><script type="math/tex; mode=display">
\text{求5次多项式}f(x)=4x^5+3x^3+1\text {在区间[0,2]上的3次最佳平方逼近多项式并估计平（均）方误差}</script><h3 id="3、最小二乘拟合函数的计算；（求拟合给定数据点的函数）"><a href="#3、最小二乘拟合函数的计算；（求拟合给定数据点的函数）" class="headerlink" title="3、最小二乘拟合函数的计算；（求拟合给定数据点的函数）"></a>3、最小二乘拟合函数的计算；（求拟合给定数据点的函数）</h3><h2 id="四、数值积分"><a href="#四、数值积分" class="headerlink" title="四、数值积分"></a>四、数值积分</h2><h3 id="1、代数精度的定义（数值求积公式的构造及代数精度的判别）"><a href="#1、代数精度的定义（数值求积公式的构造及代数精度的判别）" class="headerlink" title="1、代数精度的定义（数值求积公式的构造及代数精度的判别）"></a>1、代数精度的定义（数值求积公式的构造及代数精度的判别）</h3></li>
<li>例如<script type="math/tex; mode=display">
\text{求积公式}\int f(x)dx\approx=A_0f(0)+A_1f(x_1)+A_2f(1)\\ 
\text {试确定求积系数}A_0,A_1,A_2\text {与求积节点}X_1\text {使求积公式的代数精度尽可能高，}\\ 
\text {并指出求积公式的代数精度。}</script><h3 id="2、Newton-Cotes求积公式"><a href="#2、Newton-Cotes求积公式" class="headerlink" title="2、Newton-Cotes求积公式"></a>2、Newton-Cotes求积公式</h3><h4 id="（1）梯形公式及其截断误差表达式（推导，代数精度）；"><a href="#（1）梯形公式及其截断误差表达式（推导，代数精度）；" class="headerlink" title="（1）梯形公式及其截断误差表达式（推导，代数精度）；"></a>（1）梯形公式及其截断误差表达式（推导，代数精度）；</h4><h4 id="（2）simpson公式及其截断误差表达式（推导，代数精度）；"><a href="#（2）simpson公式及其截断误差表达式（推导，代数精度）；" class="headerlink" title="（2）simpson公式及其截断误差表达式（推导，代数精度）；"></a>（2）simpson公式及其截断误差表达式（推导，代数精度）；</h4><h3 id="3、复化求积公式"><a href="#3、复化求积公式" class="headerlink" title="3、复化求积公式"></a>3、复化求积公式</h3><h4 id="（1）复化梯形公式及其截断误差表达式（推导，代数精度）；"><a href="#（1）复化梯形公式及其截断误差表达式（推导，代数精度）；" class="headerlink" title="（1）复化梯形公式及其截断误差表达式（推导，代数精度）；"></a>（1）复化梯形公式及其截断误差表达式（推导，代数精度）；</h4><h4 id="（2）复化simpson公式及其截断误差表达式（推导，代数精度）；"><a href="#（2）复化simpson公式及其截断误差表达式（推导，代数精度）；" class="headerlink" title="（2）复化simpson公式及其截断误差表达式（推导，代数精度）；"></a>（2）复化simpson公式及其截断误差表达式（推导，代数精度）；</h4><h3 id="4、Gauss型求积公式（定义，代数精度）"><a href="#4、Gauss型求积公式（定义，代数精度）" class="headerlink" title="4、Gauss型求积公式（定义，代数精度）"></a>4、Gauss型求积公式（定义，代数精度）</h3><h2 id="五、矩阵分析基础"><a href="#五、矩阵分析基础" class="headerlink" title="五、矩阵分析基础"></a>五、矩阵分析基础</h2><h3 id="1．向量范数的定义与计算（1-范数，2-范数，∞—范数）；"><a href="#1．向量范数的定义与计算（1-范数，2-范数，∞—范数）；" class="headerlink" title="1．向量范数的定义与计算（1-范数，2-范数，∞—范数）；"></a>1．向量范数的定义与计算（1-范数，2-范数，∞—范数）；</h3><h3 id="2．矩阵范数的定义与计算（1-范数，2-范数，∞—范数）；"><a href="#2．矩阵范数的定义与计算（1-范数，2-范数，∞—范数）；" class="headerlink" title="2．矩阵范数的定义与计算（1-范数，2-范数，∞—范数）；"></a>2．矩阵范数的定义与计算（1-范数，2-范数，∞—范数）；</h3><h2 id="六、线性方程组的直接法"><a href="#六、线性方程组的直接法" class="headerlink" title="六、线性方程组的直接法"></a>六、线性方程组的直接法</h2><h3 id="1-列主元Gauss消去法；"><a href="#1-列主元Gauss消去法；" class="headerlink" title="1.列主元Gauss消去法；"></a>1.列主元Gauss消去法；</h3><h3 id="2-Doolittle三角分解与列主元Doolittle三角分解法；"><a href="#2-Doolittle三角分解与列主元Doolittle三角分解法；" class="headerlink" title="2.Doolittle三角分解与列主元Doolittle三角分解法；"></a>2.Doolittle三角分解与列主元Doolittle三角分解法；</h3><h3 id="3-紧凑格式的列主元Doolittle三角分解法；"><a href="#3-紧凑格式的列主元Doolittle三角分解法；" class="headerlink" title="3.紧凑格式的列主元Doolittle三角分解法；"></a>3.紧凑格式的列主元Doolittle三角分解法；</h3><h3 id="4-求对称正定方程组的平方根法；"><a href="#4-求对称正定方程组的平方根法；" class="headerlink" title="4.求对称正定方程组的平方根法；"></a>4.求对称正定方程组的平方根法；</h3><h2 id="七、线性方程组的迭代法"><a href="#七、线性方程组的迭代法" class="headerlink" title="七、线性方程组的迭代法"></a>七、线性方程组的迭代法</h2><h3 id="1、Jacobi迭代格式的构造与收敛性判别；"><a href="#1、Jacobi迭代格式的构造与收敛性判别；" class="headerlink" title="1、Jacobi迭代格式的构造与收敛性判别；"></a>1、Jacobi迭代格式的构造与收敛性判别；</h3><h3 id="2、Gauss-Seidel迭代格式的构造与收敛性判别；"><a href="#2、Gauss-Seidel迭代格式的构造与收敛性判别；" class="headerlink" title="2、Gauss-Seidel迭代格式的构造与收敛性判别；"></a>2、Gauss-Seidel迭代格式的构造与收敛性判别；</h3><h2 id="八、非线性方程的根"><a href="#八、非线性方程的根" class="headerlink" title="八、非线性方程的根"></a>八、非线性方程的根</h2><h3 id="1、简单迭代格式的构造以及收敛性与收敛阶的判别"><a href="#1、简单迭代格式的构造以及收敛性与收敛阶的判别" class="headerlink" title="1、简单迭代格式的构造以及收敛性与收敛阶的判别"></a>1、简单迭代格式的构造以及收敛性与收敛阶的判别</h3><h3 id="2、Newton迭代格式的构造与收敛阶的判别；"><a href="#2、Newton迭代格式的构造与收敛阶的判别；" class="headerlink" title="2、Newton迭代格式的构造与收敛阶的判别；"></a>2、Newton迭代格式的构造与收敛阶的判别；</h3><h2 id="九、常微分方程（初值问题）的数值解"><a href="#九、常微分方程（初值问题）的数值解" class="headerlink" title="九、常微分方程（初值问题）的数值解"></a>九、常微分方程（初值问题）的数值解</h2><h3 id="1、欧拉与改进欧拉公式的迭代格式及局部截断误差分析；"><a href="#1、欧拉与改进欧拉公式的迭代格式及局部截断误差分析；" class="headerlink" title="1、欧拉与改进欧拉公式的迭代格式及局部截断误差分析；"></a>1、欧拉与改进欧拉公式的迭代格式及局部截断误差分析；</h3><h3 id="2、龙格-库塔公式的迭代格式及局部截断误差分析；"><a href="#2、龙格-库塔公式的迭代格式及局部截断误差分析；" class="headerlink" title="2、龙格-库塔公式的迭代格式及局部截断误差分析；"></a>2、龙格-库塔公式的迭代格式及局部截断误差分析；</h3></li>
</ul>

      
    </div>
    <footer class="article-footer">
      <a data-url="https://goofyer.gitee.io/notes-on-computer-expertise/2022/01/02/%E6%95%B0%E5%80%BC%E5%88%86%E6%9E%90%E7%AC%94%E8%AE%B0/" data-id="cl403sxqo000hf8vuc53l78m1" data-title="数值分析笔记" class="article-share-link">Share</a>
      
      
      
    </footer>
  </div>
  
</article>



  


  <nav id="page-nav">
    
    <a class="extend prev" rel="prev" href="/notes-on-computer-expertise/page/4/">&laquo; Prev</a><a class="page-number" href="/notes-on-computer-expertise/">1</a><span class="space">&hellip;</span><a class="page-number" href="/notes-on-computer-expertise/page/3/">3</a><a class="page-number" href="/notes-on-computer-expertise/page/4/">4</a><span class="page-number current">5</span><a class="page-number" href="/notes-on-computer-expertise/page/6/">6</a><a class="page-number" href="/notes-on-computer-expertise/page/7/">7</a><span class="space">&hellip;</span><a class="page-number" href="/notes-on-computer-expertise/page/14/">14</a><a class="extend next" rel="next" href="/notes-on-computer-expertise/page/6/">Next &raquo;</a>
  </nav>

</section>
        
          <aside id="sidebar">
  
    
  <div class="widget-wrap">
    <h3 class="widget-title">Categories</h3>
    <div class="widget">
      <ul class="category-list"><li class="category-list-item"><a class="category-list-link" href="/notes-on-computer-expertise/categories/C-%E5%B7%A5%E5%85%B7/">C#工具</a></li><li class="category-list-item"><a class="category-list-link" href="/notes-on-computer-expertise/categories/C-%E5%B7%A5%E5%85%B7/">C++工具</a></li><li class="category-list-item"><a class="category-list-link" href="/notes-on-computer-expertise/categories/Mysql/">Mysql</a></li><li class="category-list-item"><a class="category-list-link" href="/notes-on-computer-expertise/categories/blender/">blender</a></li><li class="category-list-item"><a class="category-list-link" href="/notes-on-computer-expertise/categories/linux/">linux</a></li><li class="category-list-item"><a class="category-list-link" href="/notes-on-computer-expertise/categories/manim/">manim</a></li><li class="category-list-item"><a class="category-list-link" href="/notes-on-computer-expertise/categories/spring/">spring</a></li><li class="category-list-item"><a class="category-list-link" href="/notes-on-computer-expertise/categories/vba%E5%9F%BA%E7%A1%80%E6%93%8D%E4%BD%9C/">vba基础操作</a></li><li class="category-list-item"><a class="category-list-link" href="/notes-on-computer-expertise/categories/%E5%88%9B%E9%80%A0%E6%A8%A1%E5%BC%8F/">创造模式</a></li><li class="category-list-item"><a class="category-list-link" href="/notes-on-computer-expertise/categories/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/">操作系统</a></li><li class="category-list-item"><a class="category-list-link" href="/notes-on-computer-expertise/categories/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86/">操作系统基础知识</a></li><li class="category-list-item"><a class="category-list-link" href="/notes-on-computer-expertise/categories/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E5%BC%80%E5%8F%91/">操作系统开发</a></li><li class="category-list-item"><a class="category-list-link" href="/notes-on-computer-expertise/categories/%E6%95%B0%E5%AD%A6/">数学</a></li><li class="category-list-item"><a class="category-list-link" href="/notes-on-computer-expertise/categories/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/">数据结构</a></li><li class="category-list-item"><a class="category-list-link" href="/notes-on-computer-expertise/categories/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86/">数据结构基础知识</a></li><li class="category-list-item"><a class="category-list-link" href="/notes-on-computer-expertise/categories/%E6%A8%A1%E6%9D%BF/">模板</a></li><li class="category-list-item"><a class="category-list-link" href="/notes-on-computer-expertise/categories/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/">深度学习</a></li><li class="category-list-item"><a class="category-list-link" href="/notes-on-computer-expertise/categories/%E8%8B%B1%E8%AF%AD/">英语</a></li><li class="category-list-item"><a class="category-list-link" href="/notes-on-computer-expertise/categories/%E8%99%9A%E5%B9%BB4/">虚幻4</a></li><li class="category-list-item"><a class="category-list-link" href="/notes-on-computer-expertise/categories/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BB%84%E6%88%90%E5%8E%9F%E7%90%86/">计算机组成原理</a></li><li class="category-list-item"><a class="category-list-link" href="/notes-on-computer-expertise/categories/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/">计算机网络</a></li></ul>
    </div>
  </div>


  
    
  <div class="widget-wrap">
    <h3 class="widget-title">Tags</h3>
    <div class="widget">
      <ul class="tag-list" itemprop="keywords"><li class="tag-list-item"><a class="tag-list-link" href="/notes-on-computer-expertise/tags/C/" rel="tag">C++</a></li></ul>
    </div>
  </div>


  
    
  <div class="widget-wrap">
    <h3 class="widget-title">Tag Cloud</h3>
    <div class="widget tagcloud">
      <a href="/notes-on-computer-expertise/tags/C/" style="font-size: 10px;">C++</a>
    </div>
  </div>

  
    
  <div class="widget-wrap">
    <h3 class="widget-title">Archives</h3>
    <div class="widget">
      <ul class="archive-list"><li class="archive-list-item"><a class="archive-list-link" href="/notes-on-computer-expertise/archives/2022/05/">May 2022</a></li><li class="archive-list-item"><a class="archive-list-link" href="/notes-on-computer-expertise/archives/2022/03/">March 2022</a></li><li class="archive-list-item"><a class="archive-list-link" href="/notes-on-computer-expertise/archives/2022/02/">February 2022</a></li><li class="archive-list-item"><a class="archive-list-link" href="/notes-on-computer-expertise/archives/2022/01/">January 2022</a></li><li class="archive-list-item"><a class="archive-list-link" href="/notes-on-computer-expertise/archives/2021/12/">December 2021</a></li></ul>
    </div>
  </div>


  
    
  <div class="widget-wrap">
    <h3 class="widget-title">Recent Posts</h3>
    <div class="widget">
      <ul>
        
          <li>
            <a href="/notes-on-computer-expertise/2022/05/31/vue/%E5%89%8D%E7%AB%AF%E6%A1%86%E6%9E%B6%E9%AA%8C%E8%AF%81%E7%A0%81%E6%97%A0%E6%B3%95%E6%98%BE%E7%A4%BA/">(no title)</a>
          </li>
        
          <li>
            <a href="/notes-on-computer-expertise/2022/05/26/%E6%95%B0%E6%8D%AE%E5%BA%93/navicat%E5%AE%89%E8%A3%85/">(no title)</a>
          </li>
        
          <li>
            <a href="/notes-on-computer-expertise/2022/05/25/%E8%99%9A%E5%B9%BB4%E5%BC%95%E6%93%8E%E5%BC%80%E5%8F%91/%E8%99%9A%E5%B9%BB%E5%9B%9B%20mod%E5%88%B6%E4%BD%9C/">(no title)</a>
          </li>
        
          <li>
            <a href="/notes-on-computer-expertise/2022/05/23/python/python%E6%89%B9%E9%87%8F%E7%94%9F%E6%88%90%E6%95%B0%E6%8D%AE/">(no title)</a>
          </li>
        
          <li>
            <a href="/notes-on-computer-expertise/2022/05/23/vba%E5%9F%BA%E7%A1%80%E6%93%8D%E4%BD%9C%E7%AC%94%E8%AE%B0/EXCEL%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B/">(no title)</a>
          </li>
        
      </ul>
    </div>
  </div>

  
</aside>
        
      </div>
      <footer id="footer">
  
  <div class="outer">
    <div id="footer-info" class="inner">
      
      &copy; 2022 John Doe<br>
      Powered by <a href="https://hexo.io/" target="_blank">Hexo</a>
    </div>
  </div>
</footer>

    </div>
    <nav id="mobile-nav">
  
    <a href="/notes-on-computer-expertise/" class="mobile-nav-link">Home</a>
  
    <a href="/notes-on-computer-expertise/archives" class="mobile-nav-link">Archives</a>
  
</nav>
    


<script src="/notes-on-computer-expertise/js/jquery-3.4.1.min.js"></script>



  
<script src="/notes-on-computer-expertise/fancybox/jquery.fancybox.min.js"></script>




<script src="/notes-on-computer-expertise/js/script.js"></script>





  </div>
<script type="text/x-mathjax-config">
    MathJax.Hub.Config({
        tex2jax: {
            inlineMath: [ ["$","$"], ["\\(","\\)"] ],
            skipTags: ['script', 'noscript', 'style', 'textarea', 'pre', 'code'],
            processEscapes: true
        }
    });
    MathJax.Hub.Queue(function() {
        var all = MathJax.Hub.getAllJax();
        for (var i = 0; i < all.length; ++i)
            all[i].SourceElement().parentNode.className += ' has-jax';
    });
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-MML-AM_CHTML"></script>
</body>
</html>